{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "1QiCFLer1FIe" }, "source": [ "**Lab 6 – Hyperparameter Tuning**" ] }, { "cell_type": "markdown", "metadata": { "id": "vCyq3-8y1FIj" }, "source": [ "_This notebook contains the sample from https://github.com/fchollet/deep-learning-with-python-notebooks_, https://keras.io/guides/keras_tuner/getting_started/, https://keras.io/examples/vision/reptile/ and https://github.com/datamllab/automl-in-action-notebooks" ] }, { "cell_type": "markdown", "metadata": { "id": "9J5g6PDs1FIk" }, "source": [ "\n", " \n", " \n", "
\n", " \"Open\n", " \n", " \n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "jRs8qCoF1FIk" }, "source": [ "# Setup" ] }, { "cell_type": "markdown", "metadata": { "id": "ZB0uE-rI1FIl" }, "source": [ "First, let's import a few common modules, ensure MatplotLib plots figures inline and prepare a function to save the figures. We also check that Python 3.5 or later is installed (although Python 2.x may work, it is deprecated so we strongly recommend you use Python 3 instead), as well as Scikit-Learn ≥0.20 and TensorFlow ≥2.0." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "id": "Jc9dG1NU1FIm" }, "outputs": [], "source": [ "# Python ≥3.5 is required\n", "import sys\n", "assert sys.version_info >= (3, 5)\n", "\n", "# Is this notebook running on Colab or Kaggle?\n", "IS_COLAB = \"google.colab\" in sys.modules\n", "IS_KAGGLE = \"kaggle_secrets\" in sys.modules\n", "\n", "# Scikit-Learn ≥0.20 is required\n", "import sklearn\n", "assert sklearn.__version__ >= \"0.20\"\n", "\n", "# TensorFlow ≥2.0 is required\n", "import tensorflow as tf\n", "from tensorflow import keras\n", "import tensorflow_datasets as tfds\n", "assert tf.__version__ >= \"2.0\"\n", "\n", "if not tf.config.list_physical_devices('GPU'):\n", " print(\"No GPU was detected. CNNs can be very slow without a GPU.\")\n", " if IS_COLAB:\n", " print(\"Go to Runtime > Change runtime and select a GPU hardware accelerator.\")\n", " if IS_KAGGLE:\n", " print(\"Go to Settings > Accelerator and select GPU.\")\n", "\n", "# Common imports\n", "import numpy as np\n", "import os\n", "import random\n", "\n", "# to make this notebook's output stable across runs\n", "np.random.seed(42)\n", "tf.random.set_seed(42)\n", "\n", "# To plot pretty figures\n", "%matplotlib inline\n", "import matplotlib as mpl\n", "import matplotlib.pyplot as plt\n", "mpl.rc('axes', labelsize=14)\n", "mpl.rc('xtick', labelsize=12)\n", "mpl.rc('ytick', labelsize=12)\n", "\n", "# Where to save the figures\n", "PROJECT_ROOT_DIR = \".\"\n", "CHAPTER_ID = \"cnn\"\n", "IMAGES_PATH = os.path.join(PROJECT_ROOT_DIR, \"images\", CHAPTER_ID)\n", "os.makedirs(IMAGES_PATH, exist_ok=True)\n", "\n", "def save_fig(fig_id, tight_layout=True, fig_extension=\"png\", resolution=300):\n", " path = os.path.join(IMAGES_PATH, fig_id + \".\" + fig_extension)\n", " print(\"Saving figure\", fig_id)\n", " if tight_layout:\n", " plt.tight_layout()\n", " plt.savefig(path, format=fig_extension, dpi=resolution)" ] }, { "cell_type": "code", "source": [ "!pip install keras-tuner -q\n", "!pip install autokeras -q" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ie5yp8uJ-XWV", "outputId": "87208f77-df2c-47ea-96d5-efa0f34cd606" }, "execution_count": 10, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[K |████████████████████████████████| 160 kB 13.9 MB/s \n", "\u001b[K |████████████████████████████████| 462 kB 46.2 MB/s \n", "\u001b[?25h" ] } ] }, { "cell_type": "markdown", "source": [ "# Hyperparamter tuning \n", "\n", "Training the weights of a model is relatively easy: you compute a loss function on a mini-batch of data and then use backpropagation to move the weights in the right direction. Updating hyperparameters, on the other hand, presents unique challenges. Consider these points:\n", "\n", "- The hyperparameter space is typically made up of discrete decisions and thus\n", "isn’t continuous or differentiable. Hence, you typically can’t do gradient descent in hyperparameter space. Instead, you must rely on gradient-free optimization techniques, which naturally are far less efficient than gradient descent.\n", "- Computing the feedback signal of this optimization process (does this set of\n", "hyperparameters lead to a high-performing model on this task?) can be extremely\n", "expensive: it requires creating and training a new model from scratch on your\n", "dataset.\n", "- The feedback signal may be noisy: if a training run performs 0.2% better, is that because of a better model configuration, or because you got lucky with the initial weight values?\n", "\n", "Thankfully, there’s a tool that makes hyperparameter tuning simpler: `KerasTuner`. Let’s check it out." ], "metadata": { "id": "dnFEHWflQNt-" } }, { "cell_type": "markdown", "source": [ "## Using KerasTuner" ], "metadata": { "id": "YaqmRmOf64NX" } }, { "cell_type": "markdown", "source": [ "KerasTuner lets you replace hard-coded hyperparameter values, such as `units=32`, with a range of possible choices, such as `Int(name=\"units\", min_value=16, max_value=64, step=16)`. This set of choices in a given model is called the search space of the hyperparameter tuning process.\n", "\n", "To specify a search space, define a model-building function. It takes an hp argument, from which you can sample hyperparameter ranges, and it returns a compiled Keras model." ], "metadata": { "id": "zArXzoEhRy2V" } }, { "cell_type": "markdown", "source": [ "### Tune model architecture" ], "metadata": { "id": "uVP8ycBrGLeg" } }, { "cell_type": "code", "source": [ "from tensorflow import keras\n", "from tensorflow.keras import layers\n", "\n", "def build_model(hp):\n", " # Sample hyperparameter values from the hp object. After sampling, these values (such as the \"units\" which is number of nuerons \n", " # variable here) are just regular Python constants.\n", " model = keras.Sequential()\n", " model.add(layers.Flatten())\n", " # Tune the number of layers.\n", " for i in range(hp.Int(\"num_layers\", 1, 3)):\n", " model.add( \n", " layers.Dense(\n", " # Tune number of units.\n", " units=hp.Int(\"units\", min_value=16, max_value=64, step=16),\n", " # Tune the activation function to use.\n", " activation=hp.Choice(\"activation\", [\"relu\", \"tanh\"]),\n", " )\n", " )\n", " # Tune whether to use dropout.\n", " if hp.Boolean(\"dropout\"):\n", " model.add(layers.Dropout(rate=0.25))\n", " model.add(layers.Dense(10, activation=\"softmax\"))\n", " # Define the optimizer learning rate as a hyperparameter.\n", " learning_rate = hp.Float(\"lr\", min_value=1e-4, max_value=1e-2, sampling=\"log\")\n", " optimizer = hp.Choice(name=\"optimizer\", values=[\"rmsprop\", \"adam\"])\n", " model.compile(\n", " optimizer=optimizer,\n", " loss=\"sparse_categorical_crossentropy\",\n", " metrics=[\"accuracy\"])\n", " return model" ], "metadata": { "id": "3p_FvdDcSC5I" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "If you want to adopt a more modular and configurable approach to model-building,\n", "you can also subclass the `HyperModel` class and define a build method, as follows." ], "metadata": { "id": "jdoal-4GSeN3" } }, { "cell_type": "code", "source": [ "import keras_tuner as kt\n", "\n", "class SimpleMLP(kt.HyperModel):\n", " # Thanks to the object-oriented approach, we can configure model constants\n", " # as constructor arguments (instead of hardcoding them in the model-building\n", " # function).\n", " def __init__(self, num_classes):\n", " self.num_classes = num_classes\n", " # The build() method is identical to our prior build_model() standalone function.\n", " def build(self, hp):\n", " # Sample hyperparameter values from the hp object. After sampling, these values (such as the \"units\" which is number of nuerons \n", " # variable here) are just regular Python constants.\n", " model = keras.Sequential()\n", " model.add(layers.Flatten())\n", " # Tune the number of layers.\n", " for i in range(hp.Int(\"num_layers\", 1, 3)):\n", " model.add( \n", " layers.Dense(\n", " # Tune number of units.\n", " units=hp.Int(\"units\", min_value=16, max_value=64, step=16),\n", " # Tune the activation function to use.\n", " activation=hp.Choice(\"activation\", [\"relu\", \"tanh\"]),\n", " )\n", " )\n", " # Tune whether to use dropout.\n", " if hp.Boolean(\"dropout\"):\n", " model.add(layers.Dropout(rate=0.25))\n", " model.add(layers.Dense(self.num_classes, activation=\"softmax\"))\n", " # Define the optimizer learning rate as a hyperparameter.\n", " learning_rate = hp.Float(\"lr\", min_value=1e-4, max_value=1e-2, sampling=\"log\")\n", " optimizer = hp.Choice(name=\"optimizer\", values=[\"rmsprop\", \"adam\"])\n", " model.compile(\n", " optimizer=optimizer,\n", " loss=\"sparse_categorical_crossentropy\",\n", " metrics=[\"accuracy\"])\n", " return model\n", "\n", "hypermodel = SimpleMLP(num_classes=10)" ], "metadata": { "id": "a7pzH433ShUB" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "The next step is to define a “tuner.” Schematically, you can think of a tuner as a for loop that will repeatedly\n", " \n", "1. Pick a set of hyperparameter values\n", "2. Call the model-building function with these values to create a model\n", "3. Train the model and record its metrics" ], "metadata": { "id": "5GUxKV5mTZ3E" } }, { "cell_type": "markdown", "source": [ "KerasTuner has several built-in tuners available— **RandomSearch, BayesianOptimization, and Hyperband**. Let’s try BayesianOptimization, a tuner that attempts to make smart predictions for which new hyperparameter values are likely to perform best given the outcomes of previous choices:" ], "metadata": { "id": "IJVn0x-M_BUZ" } }, { "cell_type": "code", "source": [ "tuner = kt.BayesianOptimization(\n", " build_model,\n", " objective=\"val_accuracy\",\n", " max_trials=3,\n", " executions_per_trial=2,\n", " directory=\"mnist_kt_test\",\n", " overwrite=True,\n", ")" ], "metadata": { "id": "9F4FJ3rTAYYo" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "- `objective`: Specify the metric that the tuner will seek to optimize. Always specify validation metrics, since the goal of the search process is to find models that generalize!\n", "\n", "- `max_trials`: Maximum number of different model configurations (“trials”) to try before ending the search.\n", "\n", "- `executions_per_trial`: To reduce metrics variance, you can train the same model multiple times and average the results. executions_per_trial is how many training rounds(executions) to run for each model configuration (trial).\n", "\n", "- `directory`: Where to store search logs\n", "\n", "- `overwrite`: Whether to overwrite data in directory to start a new search. Set this to `True` if you’ve modified the model-building function, or to `False` to resume a previously started search with the same model-building function." ], "metadata": { "id": "7vLy3s6pAjOB" } }, { "cell_type": "markdown", "source": [ "You can display an overview of the search space via `search_space_summary()`:" ], "metadata": { "id": "RMn0LpS0BN3A" } }, { "cell_type": "code", "source": [ "tuner.search_space_summary()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "mflCzFpBloc8", "outputId": "39a7eca0-f45c-4e58-ac20-e820e3e9da50" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Search space summary\n", "Default search space size: 6\n", "num_layers (Int)\n", "{'default': None, 'conditions': [], 'min_value': 1, 'max_value': 3, 'step': 1, 'sampling': None}\n", "units (Int)\n", "{'default': None, 'conditions': [], 'min_value': 16, 'max_value': 64, 'step': 16, 'sampling': None}\n", "activation (Choice)\n", "{'default': 'relu', 'conditions': [], 'values': ['relu', 'tanh'], 'ordered': False}\n", "dropout (Boolean)\n", "{'default': False, 'conditions': []}\n", "lr (Float)\n", "{'default': 0.0001, 'conditions': [], 'min_value': 0.0001, 'max_value': 0.01, 'step': None, 'sampling': 'log'}\n", "optimizer (Choice)\n", "{'default': 'rmsprop', 'conditions': [], 'values': ['rmsprop', 'adam'], 'ordered': False}\n" ] } ] }, { "cell_type": "markdown", "source": [ "Finally, let’s launch the search. **Don’t forget to pass validation data, and make sure not to use your test set as validation data** — otherwise you’d quickly start overfitting to your test data, and you wouldn’t be able to trust your test metrics anymore:" ], "metadata": { "id": "HzNJXxA-ml9G" } }, { "cell_type": "code", "source": [ "(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()\n", "x_train = x_train.reshape((-1, 28 * 28)).astype(\"float32\") / 255\n", "x_test = x_test.reshape((-1, 28 * 28)).astype(\"float32\") / 255\n", "# Reserve these for later.\n", "x_train_full = x_train[:]\n", "y_train_full = y_train[:]\n", "num_val_samples = 10000\n", "# Set these aside as a validation set.\n", "x_train, x_val = x_train[:-num_val_samples], x_train[-num_val_samples:]\n", "y_train, y_val = y_train[:-num_val_samples], y_train[-num_val_samples:]\n", "\n", "# This takes the same arguments as fit() (it simply passes them\n", "# down to fit() for each new model).\n", "callbacks = [\n", " keras.callbacks.EarlyStopping(monitor=\"val_loss\", patience=5),\n", "]\n", "# Use a large number of epochs (you don’t know in advance how\n", "# many epochs each model will need), and use an EarlyStopping\n", "# callback to stop training when you start overfitting.\n", "tuner.search(\n", " x_train, y_train,\n", " batch_size=128,\n", " epochs=100,\n", " validation_data=(x_val, y_val),\n", " callbacks=callbacks,\n", " verbose=2,\n", ")" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "3nVxEzWMmsXA", "outputId": "1e393e49-853f-4074-9ce8-42265f2b95de" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Trial 3 Complete [00h 01m 08s]\n", "val_accuracy: 0.9752499759197235\n", "\n", "Best val_accuracy So Far: 0.9752499759197235\n", "Total elapsed time: 00h 04m 25s\n", "INFO:tensorflow:Oracle triggered exit\n" ] } ] }, { "cell_type": "markdown", "source": [ "The preceding example will run in just a few minutes, since we’re only looking at a few possible choices and we’re training on MNIST. However, with a typical search space and dataset, you’ll often find yourself letting the hyperparameter search run overnight or even over several days. **If your search process crashes, you can always restart it — just specify `overwrite=False` in the tuner so that it can resume from the trial logs stored on disk.**\n", "\n", "Once the search is complete, you can query the best hyperparameter configurations, which you can use to create high-performing models that you can then retrain." ], "metadata": { "id": "1SV_QXpWCNbH" } }, { "cell_type": "markdown", "source": [ "#### Querying the best hyperparameter configurations" ], "metadata": { "id": "R1Q69Th1CsDp" } }, { "cell_type": "code", "source": [ "top_n = 3\n", "best_hps = tuner.get_best_hyperparameters(top_n)" ], "metadata": { "id": "lCNAuqzYCjMX" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Usually, when retraining these models, **you may want to include the validation data as part of the training data, since you won’t be making any further hyperparameter changes, and thus you will no longer be evaluating performance on the validation data.** In our example, we’d train these final models on the totality of the original MNIST training data, without reserving a validation set.\n", "\n", "Before we can train on the full training data, though, there’s one last parameter we need to settle: the optimal number of epochs to train for. Typically, you’ll want to train the new models for longer than you did during the search: using an aggressive patience value in the `EarlyStopping` callback saves time during the search, but it may lead to under-fit models. Just use the validation set to find the best epoch:" ], "metadata": { "id": "eLeMS_G7C2q_" } }, { "cell_type": "code", "source": [ "def get_best_epoch(hp):\n", " model = build_model(hp)\n", " callbacks=[\n", " keras.callbacks.EarlyStopping(\n", " monitor=\"val_loss\", mode=\"min\", patience=10)\n", " ]\n", " history = model.fit(\n", " x_train, y_train,\n", " validation_data=(x_val, y_val),\n", " epochs=100,\n", " batch_size=128,\n", " callbacks=callbacks)\n", " val_loss_per_epoch = history.history[\"val_loss\"]\n", " best_epoch = val_loss_per_epoch.index(min(val_loss_per_epoch)) + 1\n", " print(f\"Best epoch: {best_epoch}\")\n", " return best_epoch, model" ], "metadata": { "id": "9ANGp1cdx9N-" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "Finally, train on the full dataset for just a bit longer than this epoch count, since you’re training on more data; 20% more in this case:" ], "metadata": { "id": "Nb1WdtxND0Ph" } }, { "cell_type": "code", "source": [ "def get_best_trained_model(hp):\n", " best_epoch, model = get_best_epoch(hp)\n", " model.fit(\n", " x_train_full, y_train_full,\n", " batch_size=128, epochs=int(best_epoch * 1.2))\n", " return model\n", "\n", "best_models = []\n", "for hp in best_hps:\n", " model = get_best_trained_model(hp)\n", " model.evaluate(x_test, y_test)\n", " best_models.append(model)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "1UMTzVTXDzEn", "outputId": "dae61354-9385-456f-e258-d12eafe0d01f" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/100\n", "391/391 [==============================] - 3s 5ms/step - loss: 0.4454 - accuracy: 0.8748 - val_loss: 0.2237 - val_accuracy: 0.9353\n", "Epoch 2/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.2319 - accuracy: 0.9324 - val_loss: 0.1763 - val_accuracy: 0.9502\n", "Epoch 3/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1745 - accuracy: 0.9488 - val_loss: 0.1433 - val_accuracy: 0.9589\n", "Epoch 4/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1394 - accuracy: 0.9579 - val_loss: 0.1374 - val_accuracy: 0.9608\n", "Epoch 5/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1170 - accuracy: 0.9647 - val_loss: 0.1105 - val_accuracy: 0.9678\n", "Epoch 6/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1019 - accuracy: 0.9697 - val_loss: 0.1056 - val_accuracy: 0.9709\n", "Epoch 7/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.0892 - accuracy: 0.9731 - val_loss: 0.1023 - val_accuracy: 0.9717\n", "Epoch 8/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.0784 - accuracy: 0.9763 - val_loss: 0.1050 - val_accuracy: 0.9700\n", "Epoch 9/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0709 - accuracy: 0.9789 - val_loss: 0.0984 - val_accuracy: 0.9720\n", "Epoch 10/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.0646 - accuracy: 0.9806 - val_loss: 0.1007 - val_accuracy: 0.9715\n", "Epoch 11/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.0583 - accuracy: 0.9824 - val_loss: 0.0971 - val_accuracy: 0.9734\n", "Epoch 12/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.0525 - accuracy: 0.9838 - val_loss: 0.1059 - val_accuracy: 0.9725\n", "Epoch 13/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0474 - accuracy: 0.9858 - val_loss: 0.1043 - val_accuracy: 0.9726\n", "Epoch 14/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0440 - accuracy: 0.9868 - val_loss: 0.1011 - val_accuracy: 0.9736\n", "Epoch 15/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0399 - accuracy: 0.9879 - val_loss: 0.1047 - val_accuracy: 0.9733\n", "Epoch 16/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.0384 - accuracy: 0.9876 - val_loss: 0.1067 - val_accuracy: 0.9721\n", "Epoch 17/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0338 - accuracy: 0.9895 - val_loss: 0.1094 - val_accuracy: 0.9722\n", "Epoch 18/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0308 - accuracy: 0.9906 - val_loss: 0.1072 - val_accuracy: 0.9720\n", "Epoch 19/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.0289 - accuracy: 0.9908 - val_loss: 0.1177 - val_accuracy: 0.9723\n", "Epoch 20/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0275 - accuracy: 0.9916 - val_loss: 0.1215 - val_accuracy: 0.9718\n", "Epoch 21/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0244 - accuracy: 0.9918 - val_loss: 0.1176 - val_accuracy: 0.9725\n", "Best epoch: 11\n", "Epoch 1/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0411 - accuracy: 0.9891\n", "Epoch 2/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0369 - accuracy: 0.9895\n", "Epoch 3/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0331 - accuracy: 0.9900\n", "Epoch 4/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0312 - accuracy: 0.9904\n", "Epoch 5/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0269 - accuracy: 0.9918\n", "Epoch 6/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0268 - accuracy: 0.9916\n", "Epoch 7/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0250 - accuracy: 0.9921\n", "Epoch 8/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0232 - accuracy: 0.9932\n", "Epoch 9/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0219 - accuracy: 0.9932\n", "Epoch 10/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0196 - accuracy: 0.9938\n", "Epoch 11/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0190 - accuracy: 0.9942\n", "Epoch 12/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0180 - accuracy: 0.9941\n", "Epoch 13/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0163 - accuracy: 0.9949\n", "313/313 [==============================] - 1s 3ms/step - loss: 0.1139 - accuracy: 0.9748\n", "Epoch 1/100\n", "391/391 [==============================] - 3s 5ms/step - loss: 0.5539 - accuracy: 0.8548 - val_loss: 0.2484 - val_accuracy: 0.9285\n", "Epoch 2/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.2632 - accuracy: 0.9243 - val_loss: 0.2041 - val_accuracy: 0.9394\n", "Epoch 3/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.2080 - accuracy: 0.9404 - val_loss: 0.1690 - val_accuracy: 0.9501\n", "Epoch 4/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1749 - accuracy: 0.9490 - val_loss: 0.1572 - val_accuracy: 0.9550\n", "Epoch 5/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1517 - accuracy: 0.9567 - val_loss: 0.1433 - val_accuracy: 0.9585\n", "Epoch 6/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1385 - accuracy: 0.9596 - val_loss: 0.1309 - val_accuracy: 0.9606\n", "Epoch 7/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1240 - accuracy: 0.9643 - val_loss: 0.1332 - val_accuracy: 0.9601\n", "Epoch 8/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1160 - accuracy: 0.9667 - val_loss: 0.1310 - val_accuracy: 0.9635\n", "Epoch 9/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1076 - accuracy: 0.9684 - val_loss: 0.1224 - val_accuracy: 0.9657\n", "Epoch 10/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1014 - accuracy: 0.9707 - val_loss: 0.1188 - val_accuracy: 0.9656\n", "Epoch 11/100\n", "391/391 [==============================] - 3s 7ms/step - loss: 0.0955 - accuracy: 0.9714 - val_loss: 0.1159 - val_accuracy: 0.9686\n", "Epoch 12/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0896 - accuracy: 0.9739 - val_loss: 0.1253 - val_accuracy: 0.9645\n", "Epoch 13/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0860 - accuracy: 0.9750 - val_loss: 0.1179 - val_accuracy: 0.9677\n", "Epoch 14/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0811 - accuracy: 0.9763 - val_loss: 0.1195 - val_accuracy: 0.9674\n", "Epoch 15/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0769 - accuracy: 0.9771 - val_loss: 0.1172 - val_accuracy: 0.9681\n", "Epoch 16/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0732 - accuracy: 0.9784 - val_loss: 0.1210 - val_accuracy: 0.9675\n", "Epoch 17/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0701 - accuracy: 0.9790 - val_loss: 0.1226 - val_accuracy: 0.9672\n", "Epoch 18/100\n", "391/391 [==============================] - 4s 9ms/step - loss: 0.0666 - accuracy: 0.9795 - val_loss: 0.1228 - val_accuracy: 0.9683\n", "Epoch 19/100\n", "391/391 [==============================] - 3s 8ms/step - loss: 0.0641 - accuracy: 0.9808 - val_loss: 0.1214 - val_accuracy: 0.9668\n", "Epoch 20/100\n", "391/391 [==============================] - 3s 6ms/step - loss: 0.0622 - accuracy: 0.9807 - val_loss: 0.1214 - val_accuracy: 0.9695\n", "Epoch 21/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.0575 - accuracy: 0.9829 - val_loss: 0.1284 - val_accuracy: 0.9684\n", "Best epoch: 11\n", "Epoch 1/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0725 - accuracy: 0.9790\n", "Epoch 2/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0669 - accuracy: 0.9807\n", "Epoch 3/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0637 - accuracy: 0.9810\n", "Epoch 4/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0615 - accuracy: 0.9817\n", "Epoch 5/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0584 - accuracy: 0.9824\n", "Epoch 6/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0554 - accuracy: 0.9837\n", "Epoch 7/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0543 - accuracy: 0.9839\n", "Epoch 8/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0529 - accuracy: 0.9838\n", "Epoch 9/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0509 - accuracy: 0.9849\n", "Epoch 10/13\n", "469/469 [==============================] - 2s 5ms/step - loss: 0.0490 - accuracy: 0.9847\n", "Epoch 11/13\n", "469/469 [==============================] - 2s 5ms/step - loss: 0.0487 - accuracy: 0.9853\n", "Epoch 12/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0463 - accuracy: 0.9861\n", "Epoch 13/13\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0450 - accuracy: 0.9862\n", "313/313 [==============================] - 1s 3ms/step - loss: 0.1321 - accuracy: 0.9669\n", "Epoch 1/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.7806 - accuracy: 0.7639 - val_loss: 0.3135 - val_accuracy: 0.9115\n", "Epoch 2/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.3034 - accuracy: 0.9118 - val_loss: 0.2381 - val_accuracy: 0.9303\n", "Epoch 3/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.2464 - accuracy: 0.9281 - val_loss: 0.2124 - val_accuracy: 0.9367\n", "Epoch 4/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.2164 - accuracy: 0.9358 - val_loss: 0.1938 - val_accuracy: 0.9450\n", "Epoch 5/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1976 - accuracy: 0.9417 - val_loss: 0.1888 - val_accuracy: 0.9442\n", "Epoch 6/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1822 - accuracy: 0.9456 - val_loss: 0.1745 - val_accuracy: 0.9504\n", "Epoch 7/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1725 - accuracy: 0.9492 - val_loss: 0.1699 - val_accuracy: 0.9499\n", "Epoch 8/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1641 - accuracy: 0.9520 - val_loss: 0.1714 - val_accuracy: 0.9502\n", "Epoch 9/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1569 - accuracy: 0.9537 - val_loss: 0.1735 - val_accuracy: 0.9497\n", "Epoch 10/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1500 - accuracy: 0.9558 - val_loss: 0.1708 - val_accuracy: 0.9490\n", "Epoch 11/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1447 - accuracy: 0.9570 - val_loss: 0.1697 - val_accuracy: 0.9522\n", "Epoch 12/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1405 - accuracy: 0.9587 - val_loss: 0.1644 - val_accuracy: 0.9522\n", "Epoch 13/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1355 - accuracy: 0.9602 - val_loss: 0.1660 - val_accuracy: 0.9531\n", "Epoch 14/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1332 - accuracy: 0.9599 - val_loss: 0.1608 - val_accuracy: 0.9547\n", "Epoch 15/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1278 - accuracy: 0.9628 - val_loss: 0.1641 - val_accuracy: 0.9535\n", "Epoch 16/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1235 - accuracy: 0.9631 - val_loss: 0.1548 - val_accuracy: 0.9546\n", "Epoch 17/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1212 - accuracy: 0.9639 - val_loss: 0.1567 - val_accuracy: 0.9549\n", "Epoch 18/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1165 - accuracy: 0.9651 - val_loss: 0.1561 - val_accuracy: 0.9550\n", "Epoch 19/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1145 - accuracy: 0.9662 - val_loss: 0.1550 - val_accuracy: 0.9546\n", "Epoch 20/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1110 - accuracy: 0.9668 - val_loss: 0.1565 - val_accuracy: 0.9555\n", "Epoch 21/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1087 - accuracy: 0.9674 - val_loss: 0.1633 - val_accuracy: 0.9547\n", "Epoch 22/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1049 - accuracy: 0.9678 - val_loss: 0.1577 - val_accuracy: 0.9558\n", "Epoch 23/100\n", "391/391 [==============================] - 2s 5ms/step - loss: 0.1030 - accuracy: 0.9687 - val_loss: 0.1565 - val_accuracy: 0.9566\n", "Epoch 24/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.1005 - accuracy: 0.9694 - val_loss: 0.1645 - val_accuracy: 0.9548\n", "Epoch 25/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.0996 - accuracy: 0.9699 - val_loss: 0.1626 - val_accuracy: 0.9565\n", "Epoch 26/100\n", "391/391 [==============================] - 2s 4ms/step - loss: 0.0974 - accuracy: 0.9712 - val_loss: 0.1574 - val_accuracy: 0.9573\n", "Best epoch: 16\n", "Epoch 1/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.1065 - accuracy: 0.9682\n", "Epoch 2/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.1030 - accuracy: 0.9689\n", "Epoch 3/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0984 - accuracy: 0.9704\n", "Epoch 4/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0969 - accuracy: 0.9706\n", "Epoch 5/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0959 - accuracy: 0.9712\n", "Epoch 6/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0932 - accuracy: 0.9719\n", "Epoch 7/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0915 - accuracy: 0.9714\n", "Epoch 8/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0900 - accuracy: 0.9722\n", "Epoch 9/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0874 - accuracy: 0.9731\n", "Epoch 10/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0866 - accuracy: 0.9729\n", "Epoch 11/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0849 - accuracy: 0.9744\n", "Epoch 12/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0846 - accuracy: 0.9743\n", "Epoch 13/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0833 - accuracy: 0.9744\n", "Epoch 14/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0806 - accuracy: 0.9746\n", "Epoch 15/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0799 - accuracy: 0.9748\n", "Epoch 16/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0806 - accuracy: 0.9749\n", "Epoch 17/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0785 - accuracy: 0.9750\n", "Epoch 18/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0762 - accuracy: 0.9761\n", "Epoch 19/19\n", "469/469 [==============================] - 2s 4ms/step - loss: 0.0762 - accuracy: 0.9762\n", "313/313 [==============================] - 1s 3ms/step - loss: 0.1615 - accuracy: 0.9564\n" ] } ] }, { "cell_type": "markdown", "source": [ "Note that if you’re not worried about slightly underperforming, there’s a shortcut you can take: just use the tuner to reload the top-performing models with the best weights saved during the hyperparameter search, without retraining new models from scratch:" ], "metadata": { "id": "_mQx8qWNEMOA" } }, { "cell_type": "code", "source": [ "models = tuner.get_best_models(top_n)\n", "best_model = models[0]\n", "# Build the model.\n", "# Needed for `Sequential` without specified `input_shape`.\n", "best_model.build(input_shape=(None, 28, 28))\n", "best_model.summary()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "ZpO4qvi3DmWx", "outputId": "5fe08a3f-9b2f-4f73-96b5-7af6d8158bef" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"sequential\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " flatten (Flatten) (None, 784) 0 \n", " \n", " dense (Dense) (None, 64) 50240 \n", " \n", " dense_1 (Dense) (None, 64) 4160 \n", " \n", " dropout (Dropout) (None, 64) 0 \n", " \n", " dense_2 (Dense) (None, 10) 650 \n", " \n", "=================================================================\n", "Total params: 55,050\n", "Trainable params: 55,050\n", "Non-trainable params: 0\n", "_________________________________________________________________\n" ] } ] }, { "cell_type": "markdown", "source": [ "You can also print a summary of the search results." ], "metadata": { "id": "1206hu5O65Yg" } }, { "cell_type": "code", "source": [ "tuner.results_summary()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rG_Ja-KUIjjL", "outputId": "39268fa5-1b09-4ce8-b9da-b3d42548e203" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Results summary\n", "Results in mnist_kt_test/untitled_project\n", "Showing 10 best trials\n", "\n", "Trial summary\n", "Hyperparameters:\n", "num_layers: 2\n", "units: 64\n", "activation: tanh\n", "dropout: True\n", "lr: 0.01\n", "optimizer: rmsprop\n", "Score: 0.9752499759197235\n", "Trial summary\n", "Hyperparameters:\n", "num_layers: 3\n", "units: 32\n", "activation: tanh\n", "dropout: True\n", "lr: 0.0007279554359283472\n", "optimizer: rmsprop\n", "Score: 0.9690499901771545\n", "Trial summary\n", "Hyperparameters:\n", "num_layers: 3\n", "units: 16\n", "activation: relu\n", "dropout: False\n", "lr: 0.00014532569603585666\n", "optimizer: adam\n", "Score: 0.9558500051498413\n" ] } ] }, { "cell_type": "markdown", "source": [ "### Tune model training" ], "metadata": { "id": "rxP0SZKCIpv4" } }, { "cell_type": "markdown", "source": [ "To tune the model building process, we need to subclass the `HyperModel` class, which also makes it easy to share and reuse hypermodels.\n", "\n", "We need to override `HyperModel.build()` and `HyperModel.fit()` to tune the model building and training process respectively. A `HyperModel.build()` method is the same as the model-building function, which creates a Keras model using the hyperparameters and returns it." ], "metadata": { "id": "OqBOGiDOPy36" } }, { "cell_type": "code", "source": [ "class MyHyperModel(kt.HyperModel):\n", " def build(self, hp):\n", " model = keras.Sequential()\n", " model.add(layers.Flatten())\n", " model.add(\n", " layers.Dense(\n", " units=hp.Int(\"units\", min_value=32, max_value=512, step=32),\n", " activation=\"relu\",\n", " )\n", " )\n", " model.add(layers.Dense(10, activation=\"softmax\"))\n", " model.compile(\n", " optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=[\"accuracy\"],\n", " )\n", " return model\n", "\n", " def fit(self, hp, model, *args, **kwargs):\n", " return model.fit(\n", " *args,\n", " # Tune whether to shuffle the data in each epoch.\n", " shuffle=hp.Boolean(\"shuffle\"),\n", " **kwargs,\n", " )" ], "metadata": { "id": "115IgIjKPrvb" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "We can do a quick check to see if the code works correctly by using a small amount of random data." ], "metadata": { "id": "Qyfl5xgIQG9M" } }, { "cell_type": "code", "source": [ "hp = kt.HyperParameters()\n", "hypermodel = MyHyperModel()\n", "model = hypermodel.build(hp)\n", "hypermodel.fit(hp, model, np.random.rand(100, 28, 28), np.random.rand(100, 10))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "TqRb-ClvQE31", "outputId": "7b6ecedd-ff15-46f3-f5f8-1dec72eb9bb7" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "4/4 [==============================] - 1s 5ms/step - loss: 12.2643 - accuracy: 0.1800\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 18 } ] }, { "cell_type": "markdown", "source": [ "### Tune data preprocessing" ], "metadata": { "id": "3Fd8CnrcQWbB" } }, { "cell_type": "markdown", "source": [ "To tune data preprocessing, we just add an additional step in `HyperModel.fit()`, where we can access the dataset from the arguments. In the following code, we tune whether to normalize the data before training the model. This time we explicitly put x and y in the function signature because we need to use them." ], "metadata": { "id": "CqEBm0aEQYS5" } }, { "cell_type": "code", "source": [ "class MyHyperModel(kt.HyperModel):\n", " def build(self, hp):\n", " model = keras.Sequential()\n", " model.add(layers.Flatten())\n", " model.add(\n", " layers.Dense(\n", " units=hp.Int(\"units\", min_value=32, max_value=512, step=32),\n", " activation=\"relu\",\n", " )\n", " )\n", " model.add(layers.Dense(10, activation=\"softmax\"))\n", " model.compile(\n", " optimizer=\"adam\", loss=\"categorical_crossentropy\", metrics=[\"accuracy\"],\n", " )\n", " return model\n", "\n", " def fit(self, hp, model, x, y, **kwargs):\n", " if hp.Boolean(\"normalize\"):\n", " x = layers.Normalization()(x)\n", " return model.fit(\n", " x,\n", " y,\n", " # Tune whether to shuffle the data in each epoch.\n", " shuffle=hp.Boolean(\"shuffle\"),\n", " **kwargs,\n", " )\n", "\n", "\n", "hp = kt.HyperParameters()\n", "hypermodel = MyHyperModel()\n", "model = hypermodel.build(hp)\n", "hypermodel.fit(hp, model, np.random.rand(100, 28, 28), np.random.rand(100, 10))" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "g7Cy12_UQN3X", "outputId": "467ba950-2b96-43eb-e4b7-4376a0082772" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "4/4 [==============================] - 1s 5ms/step - loss: 13.0625 - accuracy: 0.1000\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 19 } ] }, { "cell_type": "markdown", "source": [ "For more information, please refer to https://keras.io/keras_tuner/" ], "metadata": { "id": "TOkmR4ZzREAa" } }, { "cell_type": "markdown", "source": [ "# Few-Shot learning with model agnostic meta-learning" ], "metadata": { "id": "lnlqq1oWTJHq" } }, { "cell_type": "markdown", "source": [ "The Reptile algorithm was developed by OpenAI to perform model agnostic meta-learning. Specifically, this algorithm was designed to quickly learn to perform new tasks with minimal training (few-shot learning). The algorithm works by performing Stochastic Gradient Descent using the difference between weights trained on a mini-batch of never before seen data and the model weights prior to training over a fixed number of meta-iterations." ], "metadata": { "id": "P5YvkC5OTUTi" } }, { "cell_type": "code", "source": [ "learning_rate = 0.003\n", "meta_step_size = 0.25\n", "\n", "inner_batch_size = 25\n", "eval_batch_size = 25\n", "\n", "meta_iters = 2000\n", "eval_iters = 5\n", "inner_iters = 4\n", "\n", "eval_interval = 1\n", "train_shots = 20\n", "shots = 5\n", "classes = 5" ], "metadata": { "id": "iswchPNnRGo0" }, "execution_count": null, "outputs": [] }, { "cell_type": "markdown", "source": [ "## Prepare the data" ], "metadata": { "id": "zB8m6xLRTiP6" } }, { "cell_type": "markdown", "source": [ "The Omniglot dataset is a dataset of 1,623 characters taken from 50 different alphabets, with 20 examples for each character. The 20 samples for each character were drawn online via Amazon's Mechanical Turk. For the few-shot learning task, k samples (or \"shots\") are drawn randomly from n randomly-chosen classes. These n numerical values are used to create a new set of temporary labels to use to test the model's ability to learn a new task given few examples. In other words, if you are training on 5 classes, your new class labels will be either 0, 1, 2, 3, or 4. \n", "\n", "Omniglot is a great dataset for this task since there are many different classes to draw from, with a reasonable number of samples for each class." ], "metadata": { "id": "Q0cO1a5NTmDy" } }, { "cell_type": "code", "source": [ "class Dataset:\n", " # This class will facilitate the creation of a few-shot dataset\n", " # from the Omniglot dataset that can be sampled from quickly while also\n", " # allowing to create new labels at the same time.\n", " def __init__(self, training):\n", " # Download the tfrecord files containing the omniglot data and convert to a\n", " # dataset.\n", " split = \"train\" if training else \"test\"\n", " ds = tfds.load(\"omniglot\", split=split, as_supervised=True, shuffle_files=False)\n", " # Iterate over the dataset to get each individual image and its class,\n", " # and put that data into a dictionary.\n", " self.data = {}\n", "\n", " def extraction(image, label):\n", " # This function will shrink the Omniglot images to the desired size,\n", " # scale pixel values and convert the RGB image to grayscale\n", " image = tf.image.convert_image_dtype(image, tf.float32)\n", " image = tf.image.rgb_to_grayscale(image)\n", " image = tf.image.resize(image, [28, 28])\n", " return image, label\n", "\n", " for image, label in ds.map(extraction):\n", " image = image.numpy()\n", " label = str(label.numpy())\n", " if label not in self.data:\n", " self.data[label] = []\n", " self.data[label].append(image)\n", " self.labels = list(self.data.keys())\n", "\n", " def get_mini_dataset(\n", " self, batch_size, repetitions, shots, num_classes, split=False\n", " ):\n", " temp_labels = np.zeros(shape=(num_classes * shots))\n", " temp_images = np.zeros(shape=(num_classes * shots, 28, 28, 1))\n", " if split:\n", " test_labels = np.zeros(shape=(num_classes))\n", " test_images = np.zeros(shape=(num_classes, 28, 28, 1))\n", "\n", " # Get a random subset of labels from the entire label set.\n", " label_subset = random.choices(self.labels, k=num_classes)\n", " for class_idx, class_obj in enumerate(label_subset):\n", " # Use enumerated index value as a temporary label for mini-batch in\n", " # few shot learning.\n", " temp_labels[class_idx * shots : (class_idx + 1) * shots] = class_idx\n", " # If creating a split dataset for testing, select an extra sample from each\n", " # label to create the test dataset.\n", " if split:\n", " test_labels[class_idx] = class_idx\n", " images_to_split = random.choices(\n", " self.data[label_subset[class_idx]], k=shots + 1\n", " )\n", " test_images[class_idx] = images_to_split[-1]\n", " temp_images[\n", " class_idx * shots : (class_idx + 1) * shots\n", " ] = images_to_split[:-1]\n", " else:\n", " # For each index in the randomly selected label_subset, sample the\n", " # necessary number of images.\n", " temp_images[\n", " class_idx * shots : (class_idx + 1) * shots\n", " ] = random.choices(self.data[label_subset[class_idx]], k=shots)\n", "\n", " dataset = tf.data.Dataset.from_tensor_slices(\n", " (temp_images.astype(np.float32), temp_labels.astype(np.int32))\n", " )\n", " dataset = dataset.shuffle(100).batch(batch_size).repeat(repetitions)\n", " if split:\n", " return dataset, test_images, test_labels\n", " return dataset" ], "metadata": { "id": "p4D7OH_TThxL" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "import urllib3\n", "\n", "urllib3.disable_warnings() # Disable SSL warnings that may happen during download.\n", "train_dataset = Dataset(training=True)\n", "test_dataset = Dataset(training=False)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 397, "referenced_widgets": [ "e5a0920b37204a0aad4585501797ea16", "c1cbfbccfd4744f5b1b1beadf69f7f04", "47b13693e1a14308b9afe0c919eaf13a", "7b8bcb59010e45ed8cd82175ff9392e5", "604d4f7f2c3040eaa4425d860c5ff2fa", "2edb2a78988b4f4ab6ddeda989ef212d", "6e466e720c99470db9910ed4b8085aae", "1425fc1d46aa4145978ece73434a30a5", "864734ec492d46738664388abb8a8956", "e7f8cb11067041a1ab4de09b76f23c62", "82a10aba7ce643fb956585aedb0f6a69", "72d99a0067f845b996174cc4ffb249b7", "baedd5ac68fc460684338e1eab2fa3ee", "20a00f5bf1bb4ffa95e60a5dda97c855", "9f7c9205b7bf4b8892712544a004ef3f", "1c3972f6e7eb4e12a2283febdbaa18d2", "1372f40351de45438441b3b7e90e69d6", "b0e8bd2914414dae8fa206f7e4348fd9", "c86030d73e594e7fa2e4046b7fb020eb", "ea584e487c994689959fa0c5d63453f2", "d40fc051152443138e8ada96541c733a", "64027b8b90694d639c7ac572407e8f17", "7b21b497ec45467389b5ec11a78c8a70", "c942921e93ea47468c56dba18189ef3e", "8a27bd3c650441de9e1ae7289a7f0c42", "f0e9997af1f0415e9ff053f7dffdd526", "7220ee70bdd84e67b6e13fba0afb9b08", "9d4e32daad284fe48a35a693801238a9", "f29541b346ca4e1996b21c1b923a0ba1", "8846b0a647434c71be75b8df03e4b4e7", "1c70a564b5ad422ab8834268fd3600d2", "375c64834aa7473897e5d699cb9ff59c", "8ba28562fafb4821bf39c71312ebff58", "822eb8def5ee4593a533d54fa09f5c0a", "6298d5105a7f4b14854c77a3075e015b", "b5ecaf7808da4a338cd856d9cf44e89a", "912f0aa80f394d0b919036a424ec51cc", "1c7beef1e4f04d69ae8a78da48f641ba", "37d5b1f73ccb43cab8495538e836f03a", "923a5ff23b6a429285f0988b5a712517", "ab9bee72248740a18a7ff874c63f1b71", "367942d42c454de1bb1c8a8d400cca59", "6fb94ec3ac974451ad671a4cb552f08a", "a05facac798d4446b245709c46dfb090", "0a6b837296d948c79d18fd615a616e2f", "871b7d869a4b48e291b5d828bc8d34cc", "e4d45d0c43fe4632a8993df0bd62273d", "adfbfd8b33c14e41b796a24ebff8209e", "ef73ce21e02643a8b23a146500dc2648", "82fcb3523e3e4c48b142897de31c4394", "6c1dfb6d543f4b9bb4e9692bc782980e", "42c4947ed4d44c74890642968bc87442", "c1e91e85d6f54cc58709b64d08164393", "34b50657941048a58ccbf7831eefcf41", "378c21a354c743059574d20b8de4d565", "894023bf3ebe4fa3a5d195fcce13ffbb", "54a8c1bcbfc242fdb451e7253ff4f13f", "82b6e61ccc8b4b90a6b1f526c2f86936", "2ae361d1ac714652b69be337be9105fc", "f4c38ff7508146c5880842e102672df9", "5fea314d8aca40f1b0106b4e2a83d2c8", "0e4abe0679154813843e7b49debb1e8e", "324d3dbac2624b51b9f92ae02e31acdb", "29d18e2e5e2e4d538de4a573873cd01f", "135ad23150cd469697adc07415d3e16e", "56a3f105ce3c4a22b0a51d8565b63763", "efe339d7f200402fa06401153526bee4", "76eade9a331f4b1786282e2cf7875def", "fe2bdc6bcb2e401389554f493c542e47", "d55a7cc8cd5a4030bbc8165c202b009b", "817b17a449684295b11436ddc977b7e9", "155432ed1a464e2da890dc0c6f16f4a7", "fd8a80a886da498d8cf681af68853421", "74cc5f4fdfd445288ca25dcf75982546", "d2760d3fff4a4e658dbd36cdd8199878", "c9162f9330db4a60ae0f1e4435ec4bad", "6021c1de5de14fff9e9a6c8276644812", "8a9ca0cb02474c5e88f442a52df9bef5", "9684eb91275e403d907fe43072a71c62", "857397c66bd64c2b8aedb74577a204f9", "bed35abe399c4affb92e277cdef09dcc", "48f6038030664733be98c889ef919ceb", "ae8cebd5b0254e0297b9b845ac9f64c7", "93b793fddc714972a78bf850227d0214", "dad23e8284e744e4978d9a28483aa3f9", "fe638d005d6f40078f1e02ff8ae1979e", "58d9ecc46b824d2db6b47e2b60def315", "d95bee96bc73476996a7b52ec5c10b4a", "c1e5b9eaa5fb4070bbab17981d15ca35", "a9e0a18b9017423591153577d699bc21", "72a6c1a0ea29468cb75e44de4bfd9d44", "33d82c2eb7a9461982a05efe26c694ab", "a3c3936fc0ce490eb8d2fb3af4b46e3f", "ad451d8bad714b508c3840f4a9e07296", "a375762c9a51494997a94b06dd2d440b", "e0e7c2a52de74a2f8507ee413991124a", "5a14f8c36bb04be384f7be8982194fd9", "ef9b436a633e4fa9935955663b20c287", "5bd0e478c59943abb9bba8d825249365", "830a75abc8e745b1acde2237d31df698", "070e5271ae9d4d16ac6bada4690b00f1", "ed864af5171b4fcca2957e3e9430f81a", "2bf41a67579d41c3a0589b2f102dddd6", "c0dc3c7085da4bc0a82e1e53256b2a4e", "cce9d2fd3237469a94c7475053090d74", "02345db1b481416698cde24afa4e3767", "9b3e8b4f2adf4d3680c8b5eaca36acf3", "e35952dc0c854c729db3b13abbc147b4", "406398795968488fa97c3e7242196441", "6d4203ecb5e54c76ac2fe9bf4c9b5fc0", "4da6642943a449ddb60c64297e1ab45f", "d4a1850db22a477288f8a237aedbd43f", "18cf4e5464f04056b567766ad87e8026", "b67ad1d6f3bf4e71baf17e3092cc4acf", "56128b724a3941bcbc8ea09737e17213", "d788ec6dd00445d99595d7ae4af3c40c", "3f8bada77f1440ceb153ac7b2ddcf08e", "7cd63898298d49818dc1aa4c6c77229e", "e62c0e13db0148a29b54f955ef363e99", "2a2d63ae47324235bff4659385cbed5b", "09cf282180b549049883e05261d77572" ] }, "id": "8GvVbmCAThPu", "outputId": "c24d2496-fa23-46d5-bbcf-c0f6a010cf09" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "\u001b[1mDownloading and preparing dataset omniglot/3.0.0 (download: 17.95 MiB, generated: Unknown size, total: 17.95 MiB) to /root/tensorflow_datasets/omniglot/3.0.0...\u001b[0m\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "Dl Completed...: 0 url [00:00, ? url/s]" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "e5a0920b37204a0aad4585501797ea16" } }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "Dl Size...: 0 MiB [00:00, ? MiB/s]" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "72d99a0067f845b996174cc4ffb249b7" } }, "metadata": {} }, { "output_type": "display_data", "data": { "text/plain": [ "Extraction completed...: 0 file [00:00, ? file/s]" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "7b21b497ec45467389b5ec11a78c8a70" } }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "\n", "\n", "\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ "0 examples [00:00, ? examples/s]" ], "application/vnd.jupyter.widget-view+json": { "version_major": 2, "version_minor": 0, "model_id": "822eb8def5ee4593a533d54fa09f5c0a" } }, "metadata": {} }, { "output_type": "stream", "name": "stdout", "text": [ "Shuffling and writing examples to /root/tensorflow_datasets/omniglot/3.0.0.incompleteFKUV9F/omniglot-train.tfrecord\n" ] }, { "output_type": "display_data", "data": { "text/plain": [ " 0%| | 0/19280 [00:00" ], "image/png": "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AACS7c9uYNLs27f3MrGZmZlmbXV1dYSdADCOZmdnm7W1tbWR9XH+/Pme68ePHx9ZDwAALXsvLQAAAADYZQQ0AAAAAMkENAAAAADJBDQAAAAAyQQ0AAAAAMkENAAAAADJjNkesY2NjewWBra8vNxzfXFxsXnMwYMHm7Xr16/fdU9MpnEZV981mrc1zhd2u0HOBV2WlpaatYWFhb7vr9VfRMTJkyd7rp87d655zKlTp/ruAfheZ86cadauXr06sj66XnMAso3HXzkAAAAAE0xAAwAAAJBMQAMAAACQTEADAAAAkExAAwAAAJBMQAMAAACQzJhttq017rRrDGrXOOS1tbWe6zMzM/01xsQZZPRuxGCjNa9du9asHT58uFlrPfc3Njb67gHGySDnglHq6uNLX/pSz/XHHnuseYwx27B9Xe/7xsX73//+nuvj8hoG72R5eTm7hU720t0Z/1dRAAAAgD1OQAMAAACQTEADAAAAkExAAwAAAJBMQAMAAACQzBQndtT09HSzNjs723PdlBveySDTmAY1NTXVrHU9V1uTLLomXHjuw85qvXaM+0QMGDeDTGtaX19v1rreLw6i9R4zImJxcbHnuskzjJOu53BrEu64+MAHPtCsDXuv70WuoAEAAABIJqABAAAASCagAQAAAEgmoAEAAABIJqABAAAASCagAQAAAEhmzDY7anV1tVm79957R9gJjFZrZPYgo0mBPF2jTrvOcbDbDXK+ap37Rq1rbzoPsxuM+/nlmWeeadYefPDBZm19fb1ZM4J7k1coAAAAgGQCGgAAAIBkAhoAAACAZAIaAAAAgGQCGgAAAIBkAhoAAACAZMZss22Li4s915eXl4f6OPPz883aysrKUB8LRu3UqVPNWtfoz3EZXQp70dLSUrPWOvfBJNuL56Suvd71GgGT6PTp083amTNnmrWuEdytv/Pm5ua239ge4AoaAAAAgGQCGgAAAIBkAhoAAACAZAIaAAAAgGQCGgAAAIBkAhoAAACAZMZss22tcdpHjx5tHnPs2LG+7+/ixYvNY5577rlmrWt8MYyLc+fONWtdz+8bN240awcOHLirngDgTntxlDaw87peOw4ePNiszc/P931/e5EraAAAAACSCWgAAAAAkgloAAAAAJIJaAAAAACSCWgAAAAAkpnixLYN+xu0W1OclpaWmscsLCwMtQf2ntnZ2WZtbW1thJ0M19WrV5s1U5zg7nSdWxYXF0fYCQAMX9eU3Nb0pHHRdR7u+rtxt3IFDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDJjthk7RmlzN1588cVm7ebNmyPspH9dI8KPHTvWrK2vr+9EOzA0+/b570EAsF1do6+7RmYPYmVlpVl74IEHhvpYXVrvg5eXl5vHGLMNAAAAwNAJaAAAAACSCWgAAAAAkgloAAAAAJIJaAAAAACSCWgAAAAAkhmzzY4yWpVRm56ezm5hR1y+fDm7BRjYbh6Dubi4mN0CjB3v72BndY2+7ho73bKwsHA37YzE3Nxcz/VhjxUfd15dAQAAAJIJaAAAAACSCWgAAAAAkgloAAAAAJIJaAAAAACSmeLEXRv0m/w3NjaG3AkA42g3TI9oMcUJvtdufg9nAhW73W4+p3b5xCc+0XPdFCcAAAAARkpAAwAAAJBMQAMAAACQTEADAAAAkExAAwAAAJBMQAMAAACQzJhtvsva2lqzNjs72/f97eYxjLATjKUHYFzcvHmzWdu/358JwHBdvny5WVtcXOy5fvr06Z1qZyy5ggYAAAAgmYAGAAAAIJmABgAAACCZgAYAAAAgmYAGAAAAIJmABgAAACCZ+Xkjtry83HP96aefbh6zurra9+N0jcTuGqXd5ezZsz3XJ230GaPT2i+tMXwRox1HPT8/36y98sorfd+fUdoADNu+fYP999hJOyd9+tOfzm4BtqVrT4/Dvu0apf3ggw/2fX+tv0H3KlfQAAAAACQT0AAAAAAkE9AAAAAAJBPQAAAAACQT0AAAAAAkE9AAAAAAJDNme0x0jb4edDxiy9LSUrO2sLAw1MeCu9F6PnaN2R72fhm2cRh/CAARe3d87SDvBaampnagExit1nN/2O8/5+fnm7VXXnlloPv0HnnTeP8lAwAAADABBDQAAAAAyQQ0AAAAAMkENAAAAADJBDQAAAAAyUxxGrHWVBrTk2D7ur7lvWvCU5djx471XD916tRA9wfsHuM+/Q12yokTJ7JbGNig+9akGHa7rudwa7rSKM9z9tjd8Y4EAAAAIJmABgAAACCZgAYAAAAgmYAGAAAAIJmABgAAACCZgAYAAAAgmTHbwJ6ytLSU3QJMpIsXLw503Nzc3FD7WFtba9ZmZ2f7vj/jQtnLuvbEKJ/7wx4BbN8yqVZWVrJb4C65ggYAAAAgmYAGAAAAIJmABgAAACCZgAYAAAAgmYAGAAAAIJmABgAAACCZMdsAwI6an5/PbiEiIs6ePdtz/fTp0yPuBEana+xu194c9ujrQayurjZrMzMzI+wEYDTyX3kBAAAAJpyABgAAACCZgAYAAAAgmYAGAAAAIJmABgAAACCZKU4AwF2bm5tr1jY2NkbYCXA7exNg93AFDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQDIBDQAAAEAyAQ0AAABAMgENAAAAQLJSa93+jUu5EhFrO9cOjI2ZWuvh7Ca2y95kguyavWlfMmHsTRhP9iaMp557s6+ABgAAAIDh8xEnAAAAgGQCGgAAAIBkAhoAAACAZAIaAAAAgGQCGgAAAIBkAhoAAACAZAIaAAAAgGQCGgAAAIBkAhoAAACAZP8fKFrfCt3+xHkAAAAASUVORK5CYII=\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "## Build and train the model" ], "metadata": { "id": "NhhPSYvpULLi" } }, { "cell_type": "markdown", "source": [ "Here, we will perform 5-way 5-shot classification" ], "metadata": { "id": "a3CPQTBTUPv7" } }, { "cell_type": "code", "source": [ "def conv_bn(x):\n", " x = layers.Conv2D(filters=64, kernel_size=3, strides=2, padding=\"same\")(x)\n", " x = layers.BatchNormalization()(x)\n", " return layers.ReLU()(x)\n", "\n", "\n", "inputs = layers.Input(shape=(28, 28, 1))\n", "x = conv_bn(inputs)\n", "x = conv_bn(x)\n", "x = conv_bn(x)\n", "x = conv_bn(x)\n", "x = layers.Flatten()(x)\n", "outputs = layers.Dense(classes, activation=\"softmax\")(x)\n", "model = keras.Model(inputs=inputs, outputs=outputs)\n", "model.compile()\n", "optimizer = keras.optimizers.SGD(learning_rate=learning_rate)" ], "metadata": { "id": "5Txm0XZTUQpF" }, "execution_count": null, "outputs": [] }, { "cell_type": "code", "source": [ "training = []\n", "testing = []\n", "for meta_iter in range(meta_iters):\n", " frac_done = meta_iter / meta_iters\n", " cur_meta_step_size = (1 - frac_done) * meta_step_size\n", " # Temporarily save the weights from the model.\n", " old_vars = model.get_weights()\n", " # Get a sample from the full dataset.\n", " mini_dataset = train_dataset.get_mini_dataset(\n", " inner_batch_size, inner_iters, train_shots, classes\n", " )\n", " for images, labels in mini_dataset:\n", " with tf.GradientTape() as tape:\n", " preds = model(images)\n", " loss = keras.losses.sparse_categorical_crossentropy(labels, preds)\n", " # We would like to find suitable weights\n", " grads = tape.gradient(loss, model.trainable_weights)\n", " optimizer.apply_gradients(zip(grads, model.trainable_weights))\n", " new_vars = model.get_weights()\n", " # Perform SGD for the meta step.\n", " for var in range(len(new_vars)):\n", " new_vars[var] = old_vars[var] + (\n", " (new_vars[var] - old_vars[var]) * cur_meta_step_size\n", " )\n", " # After the meta-learning step, reload the newly-trained weights into the model.\n", " model.set_weights(new_vars)\n", " # Evaluation loop\n", " if meta_iter % eval_interval == 0:\n", " accuracies = []\n", " for dataset in (train_dataset, test_dataset):\n", " # Sample a mini dataset from the full dataset.\n", " train_set, test_images, test_labels = dataset.get_mini_dataset(\n", " eval_batch_size, eval_iters, shots, classes, split=True\n", " )\n", " old_vars = model.get_weights()\n", " # Train on the samples and get the resulting accuracies.\n", " for images, labels in train_set:\n", " with tf.GradientTape() as tape:\n", " preds = model(images)\n", " loss = keras.losses.sparse_categorical_crossentropy(labels, preds)\n", " grads = tape.gradient(loss, model.trainable_weights)\n", " optimizer.apply_gradients(zip(grads, model.trainable_weights))\n", " test_preds = model.predict(test_images)\n", " test_preds = tf.argmax(test_preds).numpy()\n", " num_correct = (test_preds == test_labels).sum()\n", " # Reset the weights after getting the evaluation accuracies.\n", " model.set_weights(old_vars)\n", " accuracies.append(num_correct / classes)\n", " training.append(accuracies[0])\n", " testing.append(accuracies[1])\n", " if meta_iter % 100 == 0:\n", " print(\n", " \"batch %d: train=%f test=%f\" % (meta_iter, accuracies[0], accuracies[1])\n", " )" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "deawbDd5UYku", "outputId": "ac6d6eb5-cbeb-4b97-a748-5e4933f98395" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "batch 0: train=0.800000 test=0.600000\n", "batch 100: train=1.000000 test=0.800000\n", "batch 200: train=1.000000 test=0.800000\n", "batch 300: train=1.000000 test=0.800000\n", "batch 400: train=1.000000 test=0.800000\n", "batch 500: train=1.000000 test=0.800000\n", "batch 600: train=0.600000 test=0.600000\n", "batch 700: train=0.800000 test=0.600000\n", "batch 800: train=1.000000 test=1.000000\n", "batch 900: train=0.800000 test=1.000000\n", "batch 1000: train=1.000000 test=1.000000\n", "batch 1100: train=1.000000 test=0.800000\n", "batch 1200: train=1.000000 test=0.800000\n", "batch 1300: train=1.000000 test=1.000000\n", "batch 1400: train=0.600000 test=1.000000\n", "batch 1500: train=1.000000 test=1.000000\n", "batch 1600: train=1.000000 test=0.600000\n", "batch 1700: train=1.000000 test=1.000000\n", "batch 1800: train=1.000000 test=1.000000\n", "batch 1900: train=0.600000 test=0.800000\n" ] } ] }, { "cell_type": "code", "source": [ "# First, some preprocessing to smooth the training and testing arrays for display.\n", "window_length = 100\n", "train_s = np.r_[\n", " training[window_length - 1 : 0 : -1], training, training[-1:-window_length:-1]\n", "]\n", "test_s = np.r_[\n", " testing[window_length - 1 : 0 : -1], testing, testing[-1:-window_length:-1]\n", "]\n", "w = np.hamming(window_length)\n", "train_y = np.convolve(w / w.sum(), train_s, mode=\"valid\")\n", "test_y = np.convolve(w / w.sum(), test_s, mode=\"valid\")\n", "\n", "# Display the training accuracies.\n", "x = np.arange(0, len(test_y), 1)\n", "plt.plot(x, test_y, x, train_y)\n", "plt.legend([\"test\", \"train\"])\n", "plt.grid()\n", "\n", "train_set, test_images, test_labels = dataset.get_mini_dataset(\n", " eval_batch_size, eval_iters, shots, classes, split=True\n", ")\n", "for images, labels in train_set:\n", " with tf.GradientTape() as tape:\n", " preds = model(images)\n", " loss = keras.losses.sparse_categorical_crossentropy(labels, preds)\n", " grads = tape.gradient(loss, model.trainable_weights)\n", " optimizer.apply_gradients(zip(grads, model.trainable_weights))\n", "test_preds = model.predict(test_images)\n", "test_preds = tf.argmax(test_preds).numpy()\n", "\n", "_, axarr = plt.subplots(nrows=1, ncols=5, figsize=(20, 20))\n", "\n", "sample_keys = list(train_dataset.data.keys())\n", "\n", "for i, ax in zip(range(5), axarr):\n", " temp_image = np.stack((test_images[i, :, :, 0],) * 3, axis=2)\n", " temp_image *= 255\n", " temp_image = np.clip(temp_image, 0, 255).astype(\"uint8\")\n", " ax.set_title(\n", " \"Label : {}, Prediction : {}\".format(int(test_labels[i]), test_preds[i])\n", " )\n", " ax.imshow(temp_image, cmap=\"gray\")\n", " ax.xaxis.set_visible(False)\n", " ax.yaxis.set_visible(False)\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 494 }, "id": "yL-m5bX_UeG0", "outputId": "fd69ee89-e4ae-4c45-b5a1-efdae2a96f90" }, "execution_count": null, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } }, { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "# Network architecture search with AutoKeras" ], "metadata": { "id": "J5f6zAOLXBO8" } }, { "cell_type": "markdown", "source": [ "Let’s now build up an AutoML pipeline to improve the CNN structure and achieve better classification accuracy.\n", "\n", "Creating an AutoML pipeline with the `AutoKeras` functional API is quite similar to building up a neural network with the Keras functional API. The only difference is that the Keras layers are replaced with `AutoKeras`’s built-in AutoML blocks. Each block contains one or more deep learning models (or preprocessing methods) and a default search space for their hyperparameters. You can also modify the search space for each hyperparameter. To build up a network, we stack multiple Keras layers by wiring together their inputs and outputs sequentially. Specifically, it often contyains the following blocks:\n", "\n", "- **Input node**: which is a placeholder for the tensor input of the pipeline, such as `ImageInput`, `TextInput`, or `StructuredDataInput`. You can also define a general tensor input with the Input class in `AutoKeras`. The input node accepts data in multiple formats, such as Numpy arrays, Pandas DataFrames, and TensorFlow Datasets. It will also conduct certain preprocessing operations automatically, such as extending the dimensions of images if they do not have a channel dimension. The input node does not have any hyperparameters that can be set or tuned.\n", "- **Preprocessor**: which is block defines additional preprocessing operations to perform on the inputs, such as image normalization, text embedding, and so on. Depending on the operation, there may be hyperparameters to tune, such as the maximum size of the vocabulary table to use to convert text documents to their vector representations if text embedding is performed. In this block, there are no weights to be trained through backpropagation.\n", "- **Network**: which is the most important type of AutoML block in `AutoKeras`. Each block represents a set of neural network models of the same structure. For example, a `ConvBlock`. The number and types of layers are treated as hyperparameters. You can select one or more network blocks to create the pipelines based on the task at hand, and specify the search space of their hyperparameters based on your requirements. Unlike the preprocessor block, there are weights to be trained through backpropagation after specifying the hyperparameters in the network block.\n", "- **Head**: which is a task-specific component used to generate the final outputs, such as the `ClassificationHead` and `RegressionHead`. It reshapes each instance’s representation to a vector and applies a dense layer to transform it to the size of the target output. For example, if the head is a `ClassificationHead` and the problem is a binary classification problem, the output of each instance from the dense layer will be a vector of length two corresponding to the two labels. Each head also specifies the loss function and metrics to help compile each deep learning pipeline selected from the search space for training." ], "metadata": { "id": "X_ZR3HpGnlR0" } }, { "cell_type": "markdown", "source": [ "## Tuning CNNs for image classification" ], "metadata": { "id": "pxN8uAL7oMXL" } }, { "cell_type": "markdown", "source": [ "We leverage a ConvBlock in `AutoKeras` to tune the three main hyperparameters of the CNN: **the number of filters, the number of convolutional layers, and the kernel size** of the convolutional layers. A ConvBlock sequentially stacks multiple convolutional blocks (or convolutional cells). Each convolutional block sequentially stacks multiple convolutional layers, a max pooling layer, and a dropout layer.\n", "\n", "All the convolutional blocks have the same number of convolutional layers, but there can be a different number of filters in each layer. There are seven hyperparameters in the search space of a ConvBlock:\n", "\n", "- Number of convolutional blocks.\n", "- Number of convolutional layers in each block. This is the same in all the convolutional blocks.\n", "- Type of the convolutional layer. Each convolutional layer can be one of two types: it can be a regular 2D convolutional layer or a separable convolutional layer, which contains fewer weights than a normal convolutional layer but may achieve comparable performance.\n", "- Number of filters in the convolutional layer. This can be different for each layer of each block.\n", "- Kernel size of the convolutional layer. The kernel size of the max pooling layers is set to be the kernel size minus one. Once the kernel size is selected by the tuning algorithm for a ConvBlock in a trial, it will be applied for every pooling layer and convolutional layer in all the cells of that ConvBlock.\n", "- Whether to apply the max pooling layer in each cell. Once this is selected for a trial, it’s applied for every cell in the ConvBlock.\n", "- Whether to apply the dropout layer in each cell. Once this is selected for a trial, it’s applied for every cell in the ConvBlock.\n", "\n", "To keep this example simple, we’ll constrain the search space by fixing the number of blocks as two. We do not apply the dropout layer or use separable convolutional layers. The hyperparameters to be tuned are the number of layers, the kernel size, and the number of filters in each layer in the blocks. By default, they are selected from the lists `[1, 2]`, `[3, 5, 7]`, and `[16, 32, 64, 128, 256, 512]`, respectively." ], "metadata": { "id": "46qgHwxPanZj" } }, { "cell_type": "code", "source": [ "import autokeras as ak\n", "\n", "(x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data()\n", "input_node = ak.ImageInput()\n", "output_node = ak.Normalization()(input_node)\n", "output_node = ak.ConvBlock(\n", " num_blocks=2, max_pooling=True, separable=False, dropout=0.0\n", ")(output_node)\n", "output_node = ak.ClassificationHead(dropout=0.0)(output_node)\n", "\n", "auto_model = ak.AutoModel(\n", " inputs=input_node, outputs=output_node, max_trials=10, overwrite=True, seed=42\n", ")\n", "\n", "# You may run with the full dataset, but expect a longer training time.\n", "auto_model.fit(x_train, y_train, epochs=3)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rB1GdssIamwH", "outputId": "fe702613-e6a6-4d6a-b8cf-caefcfd4c2da" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Trial 10 Complete [00h 01m 46s]\n", "val_loss: 0.03229113668203354\n", "\n", "Best val_loss So Far: 0.03229113668203354\n", "Total elapsed time: 00h 31m 21s\n", "INFO:tensorflow:Oracle triggered exit\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "INFO:tensorflow:Oracle triggered exit\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Epoch 1/3\n", "1875/1875 [==============================] - 31s 16ms/step - loss: 0.2152 - accuracy: 0.9366\n", "Epoch 2/3\n", "1875/1875 [==============================] - 30s 16ms/step - loss: 0.0389 - accuracy: 0.9897\n", "Epoch 3/3\n", "1875/1875 [==============================] - 30s 16ms/step - loss: 0.0149 - accuracy: 0.9958\n", "INFO:tensorflow:Assets written to: ./auto_model/best_model/assets\n" ] }, { "output_type": "stream", "name": "stderr", "text": [ "INFO:tensorflow:Assets written to: ./auto_model/best_model/assets\n" ] }, { "output_type": "stream", "name": "stdout", "text": [ "Test accuracy: 0.9937000274658203\n" ] } ] }, { "cell_type": "code", "source": [ "test_loss, test_acc = auto_model.evaluate(x_test, y_test, verbose=0)\n", "print(\"Test accuracy: \", test_acc)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "rT-QqXR2fSMT", "outputId": "abfe40c6-2d23-4c93-b399-62394c7e216d" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Test accuracy: 0.9937000274658203\n" ] } ] }, { "cell_type": "markdown", "source": [ "The best CNN achieves 99.37% accuracy on the test set. To discover smaller architectures, we can limit the number of layers and filters in the search space. It is possible to find a smaller architecture with comparableb performance to the CNN we constructed here. I’ll leave that as an exercise for you to try out." ], "metadata": { "id": "rdvM1T7qfYq8" } }, { "cell_type": "code", "source": [ "best_model = auto_model.export_model()\n", "best_model.summary()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "u9ohHacWlEll", "outputId": "534624e7-ef5b-4d16-d27b-fc56d4f7bc2d" }, "execution_count": null, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"model\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " input_1 (InputLayer) [(None, 28, 28)] 0 \n", " \n", " cast_to_float32 (CastToFloa (None, 28, 28) 0 \n", " t32) \n", " \n", " expand_last_dim (ExpandLast (None, 28, 28, 1) 0 \n", " Dim) \n", " \n", " normalization (Normalizatio (None, 28, 28, 1) 3 \n", " n) \n", " \n", " conv2d (Conv2D) (None, 24, 24, 128) 3328 \n", " \n", " conv2d_1 (Conv2D) (None, 20, 20, 16) 51216 \n", " \n", " max_pooling2d (MaxPooling2D (None, 5, 5, 16) 0 \n", " ) \n", " \n", " conv2d_2 (Conv2D) (None, 5, 5, 16) 6416 \n", " \n", " conv2d_3 (Conv2D) (None, 5, 5, 512) 205312 \n", " \n", " max_pooling2d_1 (MaxPooling (None, 2, 2, 512) 0 \n", " 2D) \n", " \n", " flatten (Flatten) (None, 2048) 0 \n", " \n", " dense (Dense) (None, 10) 20490 \n", " \n", " classification_head_1 (Soft (None, 10) 0 \n", " max) \n", " \n", "=================================================================\n", "Total params: 286,765\n", "Trainable params: 286,762\n", "Non-trainable params: 3\n", "_________________________________________________________________\n" ] } ] }, { "cell_type": "markdown", "source": [ "# Automated pipeline search with AutoKeras" ], "metadata": { "id": "LbkcFJZ5fwe7" } }, { "cell_type": "markdown", "source": [ "It is also possible to use autoKeras in AutoML applications: selecting the best types of components (models or preprocessors) to use in the deep learning pipeline. This is a more complex scenario than only tuning the hyperparameters of a specific type of model, as introduced in the previous section, because different models and preprocessors may compose different operations and have unique hyperparameters. It requires us to jointly select the combination of preprocessors and models and their coupled hyperparameters. \n", "\n", "For example, in image classification, there are a lot of advanced models proposed beyond the naive CNN we used previously, such as ResNet, Xception, and so on. You’ll also need to decide on suitable preprocessing methods, such as choosing whether to use normalization or not. We’ll work through some image classification examples here to show you how to automatically select models and preprocessing methods." ], "metadata": { "id": "gyhEyEmwghkM" } }, { "cell_type": "markdown", "source": [ "## Automated selection of image preprocessing methods" ], "metadata": { "id": "uqDi-JlDjZLk" } }, { "cell_type": "markdown", "source": [ "In fact, it is also straightforward to extend the AutoML pipeline to tune and select a suitable data augmentation method — that is, to use an AutoML block to select and evaluate various data augmentation methods. The `ImageBlock` also allows us to select among multiple data preprocessing methods, such as deciding whether to use normalization and/or data augmentation methods to prepare the data.\n", "\n", "Let’s use an image classification example to illustrate how to automatically select preprocessing methods for a ResNet model. We decide whether to use data augmentation and normalization methods or not. The dataset we use here is a subset of the CIFAR-10 dataset. To make things easier, we’ll only use images from two classes, \"airplane\" and \"automobile.\" " ], "metadata": { "id": "SIVhOjTriLgb" } }, { "cell_type": "code", "source": [ "import ssl\n", "ssl._create_default_https_context = ssl._create_unverified_context\n", "(x_train, y_train), (x_test, y_test) = keras.datasets.cifar10.load_data()\n", "print(\"Training image shape:\", x_train.shape) # (60000, 28, 28)\n", "print(\"Training label shape:\", y_train.shape) # (60000,)\n", "print(\"First five training labels:\", y_train[:5]) # array([5 0 4 1 9], dtype=uint8)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "IxVlQKdIcKrK", "outputId": "e7bc9e3c-9895-44f7-d899-27d66ca2ce38" }, "execution_count": 3, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Downloading data from https://www.cs.toronto.edu/~kriz/cifar-10-python.tar.gz\n", "170500096/170498071 [==============================] - 6s 0us/step\n", "170508288/170498071 [==============================] - 6s 0us/step\n", "Training image shape: (50000, 32, 32, 3)\n", "Training label shape: (50000, 1)\n", "First five training labels: [[6]\n", " [9]\n", " [9]\n", " [4]\n", " [1]]\n" ] } ] }, { "cell_type": "code", "source": [ "airplane_automobile_indices_train = (y_train[:, 0] == 0) | (y_train[:, 0] == 1)\n", "airplane_automobile_indices_test = (y_test[:, 0] == 0) | (y_test[:, 0] == 1)\n", "x_train, y_train = (\n", " x_train[airplane_automobile_indices_train],\n", " y_train[airplane_automobile_indices_train],\n", ")\n", "x_test, y_test = (\n", " x_test[airplane_automobile_indices_test],\n", " y_test[airplane_automobile_indices_test],\n", ")\n", "print(\"Training image shape:\", x_train.shape) # (60000, 28, 28)\n", "print(\"Training label shape:\", y_train.shape) # (60000,)\n", "print(\"First five training labels:\", y_train[:5]) # array([5 0 4 1 9], dtype=uint8)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "L852sm1risVT", "outputId": "d8e4407f-fa8c-4558-a17e-01296cf352ba" }, "execution_count": 4, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Training image shape: (10000, 32, 32, 3)\n", "Training label shape: (10000, 1)\n", "First five training labels: [[1]\n", " [1]\n", " [0]\n", " [0]\n", " [1]]\n" ] } ] }, { "cell_type": "code", "source": [ "# plot first few images\n", "for i in range(9):\n", " # define subplot\n", " plt.subplot(330 + 1 + i)\n", " # plot raw pixel data\n", " plt.imshow(x_train[i])\n", "# show the figure\n", "plt.show()" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 272 }, "id": "D2Oju7-sivoL", "outputId": "0c4fbd1c-2e77-407a-c1d2-ac03a6889e29" }, "execution_count": 5, "outputs": [ { "output_type": "display_data", "data": { "text/plain": [ "
" ], "image/png": "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\n" }, "metadata": { "needs_background": "light" } } ] }, { "cell_type": "markdown", "source": [ "Let’s first create an AutoML pipeline to select the data augmentation method for the ResNet models. The pipeline has the same structure as the sequential AutoML pipelines we built in the previous section for tuning a single ResNet model. The only difference is that we add the image hyperblock (ImageBlock) in AutoKeras also contains preprocessing methods. The augmentation methods are selected along with the structure and other hyperparameters, such as the optimization method and learning rate." ], "metadata": { "id": "2IKTHwK2j9Kk" } }, { "cell_type": "code", "source": [ "import autokeras as ak\n", "\n", "input_node = ak.ImageInput()\n", "output_node = ak.ImageBlock(\n", " # do not specify if we want to use normalization and let it to search automatically\n", " normalize=None,\n", " # do not specify if we want to use adata ugmentation method and let it to search automatically\n", " augment=None,\n", " # Only search resnet architectures.\n", " block_type=\"resnet\",\n", ")(input_node)\n", "output_node = ak.ClassificationHead(dropout=0.0)(output_node)\n", "\n", "auto_model = ak.AutoModel(\n", " inputs=input_node, outputs=output_node, max_trials=10, overwrite=True, seed=42\n", ")\n", "\n", "auto_model.fit(x_train, y_train, epochs=10, batch_size=64)" ], "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "tQ3nIlupi__V", "outputId": "b836dda4-1a67-4ada-e035-d1ba90d3a762" }, "execution_count": 12, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Trial 10 Complete [00h 03m 31s]\n", "val_loss: 0.2668076157569885\n", "\n", "Best val_loss So Far: 0.2252582162618637\n", "Total elapsed time: 00h 34m 22s\n", "INFO:tensorflow:Oracle triggered exit\n", "Epoch 1/10\n", "157/157 [==============================] - 32s 106ms/step - loss: 0.4806 - accuracy: 0.7825\n", "Epoch 2/10\n", "157/157 [==============================] - 16s 104ms/step - loss: 0.3449 - accuracy: 0.8522\n", "Epoch 3/10\n", "157/157 [==============================] - 16s 105ms/step - loss: 0.2996 - accuracy: 0.8738\n", "Epoch 4/10\n", "157/157 [==============================] - 16s 105ms/step - loss: 0.2611 - accuracy: 0.8952\n", "Epoch 5/10\n", "157/157 [==============================] - 16s 104ms/step - loss: 0.2275 - accuracy: 0.9058\n", "Epoch 6/10\n", "157/157 [==============================] - 16s 105ms/step - loss: 0.2061 - accuracy: 0.9171\n", "Epoch 7/10\n", "157/157 [==============================] - 16s 105ms/step - loss: 0.1978 - accuracy: 0.9250\n", "Epoch 8/10\n", "157/157 [==============================] - 16s 105ms/step - loss: 0.2042 - accuracy: 0.9197\n", "Epoch 9/10\n", "157/157 [==============================] - 16s 105ms/step - loss: 0.1671 - accuracy: 0.9350\n", "Epoch 10/10\n", "157/157 [==============================] - 16s 104ms/step - loss: 0.1670 - accuracy: 0.9348\n", "INFO:tensorflow:Assets written to: ./auto_model/best_model/assets\n" ] }, { "output_type": "execute_result", "data": { "text/plain": [ "" ] }, "metadata": {}, "execution_count": 12 } ] }, { "cell_type": "code", "source": [ "auto_model.tuner.results_summary()" ], "metadata": { "id": "Ula-MdTDjAxb", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "d0c9877f-01f6-495a-a41b-598fe1958747" }, "execution_count": 13, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Results summary\n", "Results in ./auto_model\n", "Showing 10 best trials\n", "\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: False\n", "image_block_2/augment: True\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: flatten\n", "optimizer: adam\n", "learning_rate: 0.001\n", "image_block_2/image_augmentation_1/translation_factor: 0.0\n", "image_block_2/image_augmentation_1/horizontal_flip: True\n", "image_block_2/image_augmentation_1/vertical_flip: True\n", "image_block_2/image_augmentation_1/rotation_factor: 0.0\n", "image_block_2/image_augmentation_1/zoom_factor: 0.0\n", "image_block_2/image_augmentation_1/contrast_factor: 0.0\n", "Score: 0.2252582162618637\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: False\n", "image_block_2/augment: True\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: global_avg\n", "optimizer: adam\n", "learning_rate: 0.001\n", "image_block_2/image_augmentation_1/translation_factor: 0.0\n", "image_block_2/image_augmentation_1/horizontal_flip: True\n", "image_block_2/image_augmentation_1/vertical_flip: True\n", "image_block_2/image_augmentation_1/rotation_factor: 0.0\n", "image_block_2/image_augmentation_1/zoom_factor: 0.0\n", "image_block_2/image_augmentation_1/contrast_factor: 0.0\n", "Score: 0.22922293841838837\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: True\n", "image_block_2/augment: True\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: global_avg\n", "optimizer: adam\n", "learning_rate: 0.001\n", "image_block_2/image_augmentation_1/translation_factor: 0.0\n", "image_block_2/image_augmentation_1/horizontal_flip: True\n", "image_block_2/image_augmentation_1/vertical_flip: True\n", "image_block_2/image_augmentation_1/rotation_factor: 0.0\n", "image_block_2/image_augmentation_1/zoom_factor: 0.0\n", "image_block_2/image_augmentation_1/contrast_factor: 0.0\n", "Score: 0.2492995411157608\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: False\n", "image_block_2/augment: True\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: global_avg\n", "optimizer: adam\n", "learning_rate: 0.001\n", "image_block_2/image_augmentation_1/translation_factor: 0.0\n", "image_block_2/image_augmentation_1/horizontal_flip: True\n", "image_block_2/image_augmentation_1/vertical_flip: True\n", "image_block_2/image_augmentation_1/rotation_factor: 0.0\n", "image_block_2/image_augmentation_1/zoom_factor: 0.0\n", "image_block_2/image_augmentation_1/contrast_factor: 0.0\n", "Score: 0.2551061809062958\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: True\n", "image_block_2/augment: True\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: flatten\n", "optimizer: adam\n", "learning_rate: 0.001\n", "image_block_2/image_augmentation_1/translation_factor: 0.0\n", "image_block_2/image_augmentation_1/horizontal_flip: True\n", "image_block_2/image_augmentation_1/vertical_flip: True\n", "image_block_2/image_augmentation_1/rotation_factor: 0.0\n", "image_block_2/image_augmentation_1/zoom_factor: 0.0\n", "image_block_2/image_augmentation_1/contrast_factor: 0.0\n", "Score: 0.2668076157569885\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: False\n", "image_block_2/augment: True\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: global_max\n", "optimizer: adam\n", "learning_rate: 0.001\n", "image_block_2/image_augmentation_1/translation_factor: 0.0\n", "image_block_2/image_augmentation_1/horizontal_flip: True\n", "image_block_2/image_augmentation_1/vertical_flip: True\n", "image_block_2/image_augmentation_1/rotation_factor: 0.0\n", "image_block_2/image_augmentation_1/zoom_factor: 0.0\n", "image_block_2/image_augmentation_1/contrast_factor: 0.0\n", "Score: 0.3204873204231262\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: False\n", "image_block_2/augment: False\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: global_avg\n", "optimizer: adam\n", "learning_rate: 0.001\n", "Score: 0.3247886002063751\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: False\n", "image_block_2/augment: False\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: flatten\n", "optimizer: adam\n", "learning_rate: 0.001\n", "Score: 0.3482215404510498\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: False\n", "image_block_2/augment: False\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: global_max\n", "optimizer: adam\n", "learning_rate: 0.001\n", "Score: 0.35317757725715637\n", "Trial summary\n", "Hyperparameters:\n", "image_block_2/normalize: False\n", "image_block_2/augment: False\n", "image_block_2/res_net_block_1/pretrained: False\n", "image_block_2/res_net_block_1/version: resnet152_v2\n", "image_block_2/res_net_block_1/imagenet_size: False\n", "classification_head_1/spatial_reduction_1/reduction_type: flatten\n", "optimizer: adam\n", "learning_rate: 0.1\n", "Score: 0.6943274140357971\n" ] } ] }, { "cell_type": "code", "source": [ "best_model = auto_model.export_model()\n", "best_model.summary()" ], "metadata": { "id": "tffOKf0JjB2l", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "bc3a8918-33f9-4d80-b5a5-691b30fdd8a3" }, "execution_count": 14, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Model: \"model\"\n", "_________________________________________________________________\n", " Layer (type) Output Shape Param # \n", "=================================================================\n", " input_1 (InputLayer) [(None, 32, 32, 3)] 0 \n", " \n", " cast_to_float32 (CastToFloa (None, 32, 32, 3) 0 \n", " t32) \n", " \n", " random_flip (RandomFlip) (None, 32, 32, 3) 0 \n", " \n", " resnet152v2 (Functional) (None, 1, 1, 2048) 58331648 \n", " \n", " flatten (Flatten) (None, 2048) 0 \n", " \n", " dense (Dense) (None, 1) 2049 \n", " \n", " classification_head_1 (Acti (None, 1) 0 \n", " vation) \n", " \n", "=================================================================\n", "Total params: 58,333,697\n", "Trainable params: 58,189,953\n", "Non-trainable params: 143,744\n", "_________________________________________________________________\n" ] } ] }, { "cell_type": "code", "source": [ "test_loss, test_acc = auto_model.evaluate(x_test, y_test, verbose=0)\n", "print(\"Accuracy: {accuracy}%\".format(accuracy=round(test_acc * 100, 2)))" ], "metadata": { "id": "YyIJbogTjDVE", "colab": { "base_uri": "https://localhost:8080/" }, "outputId": "76cbb426-e2d9-4161-fb76-3da5d91aa266" }, "execution_count": 15, "outputs": [ { "output_type": "stream", "name": "stdout", "text": [ "Accuracy: 92.4%\n" ] } ] }, { "cell_type": "markdown", "source": [ "For more information, please refer to https://autokeras.com/" ], "metadata": { "id": "iNKB5Crhm29D" } } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.10" }, "nav_menu": {}, "toc": { "navigate_menu": true, "number_sections": true, "sideBar": true, "threshold": 6, "toc_cell": false, "toc_section_display": "block", "toc_window_display": false }, "colab": { "name": "07_Hyperparameter.ipynb", "provenance": [], "collapsed_sections": [], "toc_visible": true }, "accelerator": "GPU", "widgets": { "application/vnd.jupyter.widget-state+json": { "e5a0920b37204a0aad4585501797ea16": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_c1cbfbccfd4744f5b1b1beadf69f7f04", "IPY_MODEL_47b13693e1a14308b9afe0c919eaf13a", "IPY_MODEL_7b8bcb59010e45ed8cd82175ff9392e5" ], "layout": "IPY_MODEL_604d4f7f2c3040eaa4425d860c5ff2fa" } }, "c1cbfbccfd4744f5b1b1beadf69f7f04": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2edb2a78988b4f4ab6ddeda989ef212d", "placeholder": "​", "style": "IPY_MODEL_6e466e720c99470db9910ed4b8085aae", "value": "Dl Completed...: 100%" } }, "47b13693e1a14308b9afe0c919eaf13a": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1425fc1d46aa4145978ece73434a30a5", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_864734ec492d46738664388abb8a8956", "value": 1 } }, "7b8bcb59010e45ed8cd82175ff9392e5": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_e7f8cb11067041a1ab4de09b76f23c62", "placeholder": "​", "style": "IPY_MODEL_82a10aba7ce643fb956585aedb0f6a69", "value": " 4/4 [00:21<00:00, 1.52 url/s]" } }, "604d4f7f2c3040eaa4425d860c5ff2fa": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "2edb2a78988b4f4ab6ddeda989ef212d": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6e466e720c99470db9910ed4b8085aae": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "1425fc1d46aa4145978ece73434a30a5": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "864734ec492d46738664388abb8a8956": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "e7f8cb11067041a1ab4de09b76f23c62": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "82a10aba7ce643fb956585aedb0f6a69": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "72d99a0067f845b996174cc4ffb249b7": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_baedd5ac68fc460684338e1eab2fa3ee", "IPY_MODEL_20a00f5bf1bb4ffa95e60a5dda97c855", "IPY_MODEL_9f7c9205b7bf4b8892712544a004ef3f" ], "layout": "IPY_MODEL_1c3972f6e7eb4e12a2283febdbaa18d2" } }, "baedd5ac68fc460684338e1eab2fa3ee": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_1372f40351de45438441b3b7e90e69d6", "placeholder": "​", "style": "IPY_MODEL_b0e8bd2914414dae8fa206f7e4348fd9", "value": "Dl Size...: 100%" } }, "20a00f5bf1bb4ffa95e60a5dda97c855": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c86030d73e594e7fa2e4046b7fb020eb", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_ea584e487c994689959fa0c5d63453f2", "value": 1 } }, "9f7c9205b7bf4b8892712544a004ef3f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d40fc051152443138e8ada96541c733a", "placeholder": "​", "style": "IPY_MODEL_64027b8b90694d639c7ac572407e8f17", "value": " 17/17 [00:21<00:00, 6.89 MiB/s]" } }, "1c3972f6e7eb4e12a2283febdbaa18d2": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "1372f40351de45438441b3b7e90e69d6": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "b0e8bd2914414dae8fa206f7e4348fd9": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "c86030d73e594e7fa2e4046b7fb020eb": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "ea584e487c994689959fa0c5d63453f2": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "d40fc051152443138e8ada96541c733a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "64027b8b90694d639c7ac572407e8f17": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "7b21b497ec45467389b5ec11a78c8a70": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_c942921e93ea47468c56dba18189ef3e", "IPY_MODEL_8a27bd3c650441de9e1ae7289a7f0c42", "IPY_MODEL_f0e9997af1f0415e9ff053f7dffdd526" ], "layout": "IPY_MODEL_7220ee70bdd84e67b6e13fba0afb9b08" } }, "c942921e93ea47468c56dba18189ef3e": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_9d4e32daad284fe48a35a693801238a9", "placeholder": "​", "style": "IPY_MODEL_f29541b346ca4e1996b21c1b923a0ba1", "value": "Extraction completed...: 100%" } }, "8a27bd3c650441de9e1ae7289a7f0c42": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_8846b0a647434c71be75b8df03e4b4e7", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_1c70a564b5ad422ab8834268fd3600d2", "value": 1 } }, "f0e9997af1f0415e9ff053f7dffdd526": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_375c64834aa7473897e5d699cb9ff59c", "placeholder": "​", "style": "IPY_MODEL_8ba28562fafb4821bf39c71312ebff58", "value": " 4/4 [00:21<00:00, 5.14s/ file]" } }, "7220ee70bdd84e67b6e13fba0afb9b08": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "9d4e32daad284fe48a35a693801238a9": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "f29541b346ca4e1996b21c1b923a0ba1": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "8846b0a647434c71be75b8df03e4b4e7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "1c70a564b5ad422ab8834268fd3600d2": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "375c64834aa7473897e5d699cb9ff59c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "8ba28562fafb4821bf39c71312ebff58": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "822eb8def5ee4593a533d54fa09f5c0a": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_6298d5105a7f4b14854c77a3075e015b", "IPY_MODEL_b5ecaf7808da4a338cd856d9cf44e89a", "IPY_MODEL_912f0aa80f394d0b919036a424ec51cc" ], "layout": "IPY_MODEL_1c7beef1e4f04d69ae8a78da48f641ba" } }, "6298d5105a7f4b14854c77a3075e015b": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_37d5b1f73ccb43cab8495538e836f03a", "placeholder": "​", "style": "IPY_MODEL_923a5ff23b6a429285f0988b5a712517", "value": "" } }, "b5ecaf7808da4a338cd856d9cf44e89a": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "info", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ab9bee72248740a18a7ff874c63f1b71", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_367942d42c454de1bb1c8a8d400cca59", "value": 1 } }, "912f0aa80f394d0b919036a424ec51cc": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_6fb94ec3ac974451ad671a4cb552f08a", "placeholder": "​", "style": "IPY_MODEL_a05facac798d4446b245709c46dfb090", "value": " 19198/0 [00:18<00:00, 1825.11 examples/s]" } }, "1c7beef1e4f04d69ae8a78da48f641ba": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "37d5b1f73ccb43cab8495538e836f03a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "923a5ff23b6a429285f0988b5a712517": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "ab9bee72248740a18a7ff874c63f1b71": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "367942d42c454de1bb1c8a8d400cca59": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "6fb94ec3ac974451ad671a4cb552f08a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "a05facac798d4446b245709c46dfb090": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "0a6b837296d948c79d18fd615a616e2f": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_871b7d869a4b48e291b5d828bc8d34cc", "IPY_MODEL_e4d45d0c43fe4632a8993df0bd62273d", "IPY_MODEL_adfbfd8b33c14e41b796a24ebff8209e" ], "layout": "IPY_MODEL_ef73ce21e02643a8b23a146500dc2648" } }, "871b7d869a4b48e291b5d828bc8d34cc": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_82fcb3523e3e4c48b142897de31c4394", "placeholder": "​", "style": "IPY_MODEL_6c1dfb6d543f4b9bb4e9692bc782980e", "value": "100%" } }, "e4d45d0c43fe4632a8993df0bd62273d": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "danger", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_42c4947ed4d44c74890642968bc87442", "max": 19280, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_c1e91e85d6f54cc58709b64d08164393", "value": 19279 } }, "adfbfd8b33c14e41b796a24ebff8209e": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_34b50657941048a58ccbf7831eefcf41", "placeholder": "​", "style": "IPY_MODEL_378c21a354c743059574d20b8de4d565", "value": " 19279/19280 [00:00<00:00, 65724.58 examples/s]" } }, "ef73ce21e02643a8b23a146500dc2648": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "82fcb3523e3e4c48b142897de31c4394": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6c1dfb6d543f4b9bb4e9692bc782980e": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "42c4947ed4d44c74890642968bc87442": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "c1e91e85d6f54cc58709b64d08164393": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "34b50657941048a58ccbf7831eefcf41": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "378c21a354c743059574d20b8de4d565": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "894023bf3ebe4fa3a5d195fcce13ffbb": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_54a8c1bcbfc242fdb451e7253ff4f13f", "IPY_MODEL_82b6e61ccc8b4b90a6b1f526c2f86936", "IPY_MODEL_2ae361d1ac714652b69be337be9105fc" ], "layout": "IPY_MODEL_f4c38ff7508146c5880842e102672df9" } }, "54a8c1bcbfc242fdb451e7253ff4f13f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_5fea314d8aca40f1b0106b4e2a83d2c8", "placeholder": "​", "style": "IPY_MODEL_0e4abe0679154813843e7b49debb1e8e", "value": "" } }, "82b6e61ccc8b4b90a6b1f526c2f86936": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "info", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_324d3dbac2624b51b9f92ae02e31acdb", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_29d18e2e5e2e4d538de4a573873cd01f", "value": 1 } }, "2ae361d1ac714652b69be337be9105fc": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_135ad23150cd469697adc07415d3e16e", "placeholder": "​", "style": "IPY_MODEL_56a3f105ce3c4a22b0a51d8565b63763", "value": " 13177/0 [00:07<00:00, 1011.77 examples/s]" } }, "f4c38ff7508146c5880842e102672df9": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5fea314d8aca40f1b0106b4e2a83d2c8": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "0e4abe0679154813843e7b49debb1e8e": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "324d3dbac2624b51b9f92ae02e31acdb": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "29d18e2e5e2e4d538de4a573873cd01f": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "135ad23150cd469697adc07415d3e16e": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "56a3f105ce3c4a22b0a51d8565b63763": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "efe339d7f200402fa06401153526bee4": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_76eade9a331f4b1786282e2cf7875def", "IPY_MODEL_fe2bdc6bcb2e401389554f493c542e47", "IPY_MODEL_d55a7cc8cd5a4030bbc8165c202b009b" ], "layout": "IPY_MODEL_817b17a449684295b11436ddc977b7e9" } }, "76eade9a331f4b1786282e2cf7875def": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_155432ed1a464e2da890dc0c6f16f4a7", "placeholder": "​", "style": "IPY_MODEL_fd8a80a886da498d8cf681af68853421", "value": "100%" } }, "fe2bdc6bcb2e401389554f493c542e47": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "danger", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_74cc5f4fdfd445288ca25dcf75982546", "max": 13180, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_d2760d3fff4a4e658dbd36cdd8199878", "value": 13179 } }, "d55a7cc8cd5a4030bbc8165c202b009b": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_c9162f9330db4a60ae0f1e4435ec4bad", "placeholder": "​", "style": "IPY_MODEL_6021c1de5de14fff9e9a6c8276644812", "value": " 13179/13180 [00:00<00:00, 23976.76 examples/s]" } }, "817b17a449684295b11436ddc977b7e9": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "155432ed1a464e2da890dc0c6f16f4a7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "fd8a80a886da498d8cf681af68853421": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "74cc5f4fdfd445288ca25dcf75982546": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d2760d3fff4a4e658dbd36cdd8199878": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "c9162f9330db4a60ae0f1e4435ec4bad": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6021c1de5de14fff9e9a6c8276644812": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "8a9ca0cb02474c5e88f442a52df9bef5": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_9684eb91275e403d907fe43072a71c62", "IPY_MODEL_857397c66bd64c2b8aedb74577a204f9", "IPY_MODEL_bed35abe399c4affb92e277cdef09dcc" ], "layout": "IPY_MODEL_48f6038030664733be98c889ef919ceb" } }, "9684eb91275e403d907fe43072a71c62": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ae8cebd5b0254e0297b9b845ac9f64c7", "placeholder": "​", "style": "IPY_MODEL_93b793fddc714972a78bf850227d0214", "value": "" } }, "857397c66bd64c2b8aedb74577a204f9": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "info", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_dad23e8284e744e4978d9a28483aa3f9", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_fe638d005d6f40078f1e02ff8ae1979e", "value": 1 } }, "bed35abe399c4affb92e277cdef09dcc": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_58d9ecc46b824d2db6b47e2b60def315", "placeholder": "​", "style": "IPY_MODEL_d95bee96bc73476996a7b52ec5c10b4a", "value": " 2645/0 [00:02<00:00, 1085.40 examples/s]" } }, "48f6038030664733be98c889ef919ceb": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ae8cebd5b0254e0297b9b845ac9f64c7": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "93b793fddc714972a78bf850227d0214": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "dad23e8284e744e4978d9a28483aa3f9": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "fe638d005d6f40078f1e02ff8ae1979e": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "58d9ecc46b824d2db6b47e2b60def315": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d95bee96bc73476996a7b52ec5c10b4a": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "c1e5b9eaa5fb4070bbab17981d15ca35": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_a9e0a18b9017423591153577d699bc21", "IPY_MODEL_72a6c1a0ea29468cb75e44de4bfd9d44", "IPY_MODEL_33d82c2eb7a9461982a05efe26c694ab" ], "layout": "IPY_MODEL_a3c3936fc0ce490eb8d2fb3af4b46e3f" } }, "a9e0a18b9017423591153577d699bc21": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ad451d8bad714b508c3840f4a9e07296", "placeholder": "​", "style": "IPY_MODEL_a375762c9a51494997a94b06dd2d440b", "value": "100%" } }, "72a6c1a0ea29468cb75e44de4bfd9d44": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "danger", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_e0e7c2a52de74a2f8507ee413991124a", "max": 2720, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_5a14f8c36bb04be384f7be8982194fd9", "value": 2719 } }, "33d82c2eb7a9461982a05efe26c694ab": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_ef9b436a633e4fa9935955663b20c287", "placeholder": "​", "style": "IPY_MODEL_5bd0e478c59943abb9bba8d825249365", "value": " 2719/2720 [00:00<00:00, 27212.21 examples/s]" } }, "a3c3936fc0ce490eb8d2fb3af4b46e3f": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "ad451d8bad714b508c3840f4a9e07296": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "a375762c9a51494997a94b06dd2d440b": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "e0e7c2a52de74a2f8507ee413991124a": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5a14f8c36bb04be384f7be8982194fd9": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "ef9b436a633e4fa9935955663b20c287": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5bd0e478c59943abb9bba8d825249365": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "830a75abc8e745b1acde2237d31df698": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_070e5271ae9d4d16ac6bada4690b00f1", "IPY_MODEL_ed864af5171b4fcca2957e3e9430f81a", "IPY_MODEL_2bf41a67579d41c3a0589b2f102dddd6" ], "layout": "IPY_MODEL_c0dc3c7085da4bc0a82e1e53256b2a4e" } }, "070e5271ae9d4d16ac6bada4690b00f1": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_cce9d2fd3237469a94c7475053090d74", "placeholder": "​", "style": "IPY_MODEL_02345db1b481416698cde24afa4e3767", "value": "" } }, "ed864af5171b4fcca2957e3e9430f81a": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "info", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_9b3e8b4f2adf4d3680c8b5eaca36acf3", "max": 1, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_e35952dc0c854c729db3b13abbc147b4", "value": 1 } }, "2bf41a67579d41c3a0589b2f102dddd6": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_406398795968488fa97c3e7242196441", "placeholder": "​", "style": "IPY_MODEL_6d4203ecb5e54c76ac2fe9bf4c9b5fc0", "value": " 3107/0 [00:03<00:00, 1078.49 examples/s]" } }, "c0dc3c7085da4bc0a82e1e53256b2a4e": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "cce9d2fd3237469a94c7475053090d74": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "02345db1b481416698cde24afa4e3767": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "9b3e8b4f2adf4d3680c8b5eaca36acf3": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": "20px" } }, "e35952dc0c854c729db3b13abbc147b4": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "406398795968488fa97c3e7242196441": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "6d4203ecb5e54c76ac2fe9bf4c9b5fc0": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "4da6642943a449ddb60c64297e1ab45f": { "model_module": "@jupyter-widgets/controls", "model_name": "HBoxModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_d4a1850db22a477288f8a237aedbd43f", "IPY_MODEL_18cf4e5464f04056b567766ad87e8026", "IPY_MODEL_b67ad1d6f3bf4e71baf17e3092cc4acf" ], "layout": "IPY_MODEL_56128b724a3941bcbc8ea09737e17213" } }, "d4a1850db22a477288f8a237aedbd43f": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_d788ec6dd00445d99595d7ae4af3c40c", "placeholder": "​", "style": "IPY_MODEL_3f8bada77f1440ceb153ac7b2ddcf08e", "value": "100%" } }, "18cf4e5464f04056b567766ad87e8026": { "model_module": "@jupyter-widgets/controls", "model_name": "FloatProgressModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "ProgressView", "bar_style": "danger", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_7cd63898298d49818dc1aa4c6c77229e", "max": 3120, "min": 0, "orientation": "horizontal", "style": "IPY_MODEL_e62c0e13db0148a29b54f955ef363e99", "value": 3119 } }, "b67ad1d6f3bf4e71baf17e3092cc4acf": { "model_module": "@jupyter-widgets/controls", "model_name": "HTMLModel", "model_module_version": "1.5.0", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "1.5.0", "_view_name": "HTMLView", "description": "", "description_tooltip": null, "layout": "IPY_MODEL_2a2d63ae47324235bff4659385cbed5b", "placeholder": "​", "style": "IPY_MODEL_09cf282180b549049883e05261d77572", "value": " 3119/3120 [00:00<00:00, 16787.95 examples/s]" } }, "56128b724a3941bcbc8ea09737e17213": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "d788ec6dd00445d99595d7ae4af3c40c": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "3f8bada77f1440ceb153ac7b2ddcf08e": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } }, "7cd63898298d49818dc1aa4c6c77229e": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e62c0e13db0148a29b54f955ef363e99": { "model_module": "@jupyter-widgets/controls", "model_name": "ProgressStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "2a2d63ae47324235bff4659385cbed5b": { "model_module": "@jupyter-widgets/base", "model_name": "LayoutModel", "model_module_version": "1.2.0", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "1.2.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "overflow_x": null, "overflow_y": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "09cf282180b549049883e05261d77572": { "model_module": "@jupyter-widgets/controls", "model_name": "DescriptionStyleModel", "model_module_version": "1.5.0", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "1.5.0", "_model_name": "DescriptionStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "1.2.0", "_view_name": "StyleView", "description_width": "" } } } } }, "nbformat": 4, "nbformat_minor": 0 }